当我右键单击ListCtrl时,我有一个创建PopupMenu的GUI,我可以通过(左)鼠标单击从PopupMenu中选择项目。除了这个功能之外,我还希望能够通过特定的按键选择上下文菜单项(例如“C”代表“清除”,“A”代表“全部清除”)。
我该怎么做?
显示这个想法的片段 -
self.listcontrol=wx.ListCtrl(self, wx.NewId(), style = wx.LC_LIST|wx.LC_SINGLE_SEL)
self.listcontrol.Bind(wx.EVT_RIGHT_DOWN, self.OnFileRightDown)
...
def OnFileRightDown(self,e):
men=wx.Menu()
cmi = wx.MenuItem(men, wx.NewId(), 'Clear All...')
men.AppendItem(cmi)
self.Bind(wx.EVT_MENU, self.OnClearAll,cmi)
self.PopupMenu(men,e.GetPosition())
当弹出上下文菜单以执行其他地方定义的OnClearAll方法时,我希望能够按“A”。
我尝试使用加速器但无法使其工作。
谢谢。
答案 0 :(得分:1)
试了一下并学到了一些东西(在Win8 / wxPython 2.9.5.1上测试过):
:
请注意这里有两种不同的下划线样式。两者都使用小写和大写字母。
通过加速器条目应用加速器:
menu = wx.Menu()
item = wx.MenuItem(menu, self.popupID1, "One\tO")
acc = wx.AcceleratorEntry()
acc.Set(wx.ACCEL_NORMAL, ord('O'), self.popupID1)
item.SetAccel(acc)
menu.AppendItem(item)
允许摆脱下划线。
通过使用&
修改菜单项字符串来应用加速器:
menu.Append(self.popupID2, "Two\t&T")