gpt4 book ai didi

python - wxPython 菜单文本对齐

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:50 25 4
gpt4 key购买 nike

我正在开发一个 wxPython GUI,并且想要右对齐快捷方式文本。显然,可以使用制表符来解决这个问题,但如果有办法的话,我更愿意在本地进行。

默认的菜单项创建是这样的:

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)

我将使用快捷方式对此进行扩展,所以如果我使用选项卡,它会是这样的:

item_name = 'My menu item\t\tCtrl+Alt+H'

但是,这涉及到大量手动 \t 条目以确保一切都对齐,并且任何时候菜单项更改名称或添加另一个项目时,它们都可能需要更新。有什么办法解决这个问题,例如我没有看到自动将键绑定(bind)关联到菜单项的类方法?

编辑:我知道当传递像 &My menu item 这样的文本时,如果在加速器表中有一个与该 ID 关联的定义,对吗?

最佳答案

我深入研究了其他几个应用程序的代码以找到答案。结果是 \t 的默认行为并没有像它看起来那样做(即插入制表符),但被工具包明智地解释为正在做我想做的事情。因此,右对齐快捷方式的方法很简单:用您想要的文本创建它,然后是 \t<shortcut>。 (而不是像我上面那样)。在我上面粘贴的示例代码中,如果我希望我的快捷方式是 Ctrl + T ,因此应该是这样的:

menu = wx.Menu()
item_id = 1
item_name = 'My menu item\tCtrl+T'
help_text = 'Clicking this does something interesting.'
item = menu.Append(item_id, item_name, help_text)

编辑:根据 Mike Driscoll 的 very helpful answer 更新了以下部分.

请注意,这会创建快捷方式绑定(bind)(wxPython 选择它),但它不会使它可以使用例如Windows 上的 Alt 键。

您可以关联 Alt 键以快速打开菜单并使用 item_name 中的符号导航至该菜单。文本,但您仍然需要通过 AcceleratorTable 手动关联所需的键绑定(bind):

menu = wx.Menu()
item_id = 1

# Ctrl+T is bound to the keybinding
accelerator_table = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('T'), item_id)])
self.setAcceleratorTable(accelerator_table)

# Ctrl+T is not included, but the menu item can be accessed via Alt key
item_name = '&My menu item'

help_text = 'Clicking this does something interesting.'
item = menu.Append(item_id, item_name, help_text)

我想,这实际上是首选模式,因为 item_id 的任何地方都是如此。被引用时,可以自动引用快捷方式。这也将有助于无缝更新。

关于python - wxPython 菜单文本对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15552209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com