我正在开发一个wxpythongui,希望右对齐快捷方式文本。很明显,可以使用制表符来消除这个问题,但是如果有办法的话,我更希望在本机实现。在
因此,默认菜单项创建是:
menu = wx.Menu()
item_id = 1
item_name = 'My menu item'
help_text = 'Clicking this does something interesting.'
item = menu.append(item_id, item_name, help_text)
我将用快捷方式展开,所以如果我使用的是制表符,应该是:
^{pr2}$然而,这需要很多手动的\t
条目来确保所有条目都排成一行,并且每当菜单项更改名称或添加另一项时,它们都可能需要更新。有没有什么方法可以解决这个问题,例如,一个我没有看到的类方法可以自动将keybinding与菜单项关联起来?在
编辑:我知道当传递像&My menu item
这样的文本时,如果加速器表中有与该ID相关联的定义,它会自动使用与指定ID相关联的keybinding来执行操作,对吗?在
我翻阅了其他几个应用程序的代码来找到答案。事实证明,
\t
的默认行为并不像它看起来的那样做(即插入一个制表符),但是工具箱会合理地解释为它正是在做我想做的事情。因此,右对齐一个快捷方式的方法很简单:用您想要的文本创建它,后跟\t<shortcut>
(与我前面所做的一样)。在上面粘贴的示例代码中,如果我希望我的快捷方式是Ctrl + T
,那么它应该是这样的:编辑:根据Mike Driscoll的very helpful answer更新了以下部分。在
请注意,这会创建快捷方式绑定(wxPython将其选中),但它不能使用Windows上的Alt键使其可选。在
您可以关联Alt键以快速打开菜单并通过在
^{pr2}$item_name
文本中使用和号导航到该菜单,但您仍需要通过AcceleratorTable
手动关联所需的键绑定:我想,这实际上是首选的模式,因为在引用
item_id
的任何地方,都可以自动引用快捷方式。这也将有助于无缝更新。在虽然Chris在菜单中正确地“\t”缩进keybinding是对的,但我真的不明白他所说的用和号自动关联任何东西是什么意思。与号(&;)确实允许used to type ALT打开“文件”菜单,然后如果键入另一个应用了和号的字母,它将跳转到该菜单项,但不会将菜单项连接到快捷键表。这是通过菜单项的ID完成的
参见以下代码:
请注意,exitId用于创建菜单项,将菜单项绑定到EVT_menu,最后,它被用于AcceleratorTable中,以便用户可以使用快捷键。在
以下是一些可能有帮助的参考资料:
相关问题 更多 >
编程相关推荐