Что вам нужно, это wx.AcceleratorTable
. Затем вы можете назвать пункт меню так, как вы хотите. Вот пример (без меню):
import wx
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Accelerator Tutorial",
size=(500,500))
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
randomId = wx.NewId()
self.Bind(wx.EVT_MENU, self.onKeyCombo, id=randomId)
accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord(','),
randomId )])
self.SetAcceleratorTable(accel_tbl)
def onKeyCombo(self, event):
""""""
print("You pressed CTRL+COMMA!")
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()
А вот пара ссылок по теме:
Обновление - Я провел немного больше исследований и нашел решение для этого с помощью всего лишь пункта меню. Вы можете позвонить SetAccel и пройти через ускоритель, чтобы он заработал:
import wx
class MyForm(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="Accelerator Tutorial",
size=(500,500))
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
menubar = wx.MenuBar()
file_menu = wx.Menu()
my_id = wx.NewId()
comma_item = file_menu.Append(my_id, 'Blah\tCtrl+Comma',
'The comma cmd')
entry = wx.AcceleratorEntry(wx.ACCEL_CTRL, ord(','), my_id)
self.Bind(wx.EVT_MENU, self.onKeyCombo, id=my_id)
comma_item.SetAccel(entry)
menubar.Append(file_menu, '&File')
self.SetMenuBar(menubar)
def onKeyCombo(self, event):
""""""
print("You pressed CTRL+COMMA!")
# Run the program
if __name__ == "__main__":
app = wx.App(False)
frame = MyForm()
frame.Show()
app.MainLoop()