创建菜单项
显不显示菜单栏是一回事,但是快捷键绑定需要一个菜单项
m_exit = wx.MenuItem(exit_menu, id=wx.ID_CLOSE, text='&Exit\tCtrl+Q',helpString="Close window and exit program.", kind=wx.ITEM_NORMAL) # 创建菜单项
self.Bind(wx.EVT_MENU, self.OnClose, m_exit)
设置快捷键键位
在界面的代码段落中添加如下代码
def LoginInterface(self):
#省略了前面的代码……
entries = [wx.AcceleratorEntry() for i in range(2)]
# range()中的数字与下面的快捷键数量相等
# entries[0].Set(wx.ACCEL_CTRL, ord('N'), ID_NEW_WINDOW)
entries[0].Set(wx.ACCEL_CTRL, ord('W'), wx.ID_CLOSE)
entries[1].Set(wx.ACCEL_CTRL, ord('I'), wx.ID_ABOUT)
# entries[3].Set(wx.ACCEL_NORMAL, wx.WXK_DELETE, wx.ID_CUT)
accel = wx.AcceleratorTable(entries)
self.SetAcceleratorTable(accel)
这里entries[0].Set(wx.ACCEL_CTRL, ord('W'), wx.ID_EXIT)
这行是设置的关键,wx.ACCEL_CTRL
就是按下control的意思(MacOS下默认control键为command键,如果要使用control键是wx.ACCEL_RAW_CONTROL)后面第二个参数就是W键的ASCII值,代表这个键位,wx.ID_CLOSE
表示执行的程序,这个是wxpython内置的
退出函数
def OnClose(self, event):
dlg = wx.MessageDialog(self,
"未保存的工作将丢失!",
"确认退出?", wx.OK | wx.CANCEL | wx.ICON_QUESTION)
result = dlg.ShowModal()
dlg.Destroy()
if result == wx.ID_OK:
self.Destroy()
这个OnClose()函数可以自定义弹出框的文本
然后试验一下就可以在程序里CMD+W退出程序了