修正CHM版中例10.6代码
1.修正某些字符未正常显示
2.运行时报错 NameError: global name 'od' is not defined 字符八进制转换问题 修正od('Q')改为ord('Q')
提示:menu string 中如果包含'/t Ctrl-?',刚该菜单支持快捷键Ctrl+?操作。其中?表示字符或其他键。该快捷方式的作用与wx.AcceleratorTable 中创建的方式相同,不过wx.AcceleratorTable 可以列表形式同时对多个菜单分别创建对应的快捷方式!
修正后的代码在winxp+python2.5.4+wxpython2.8 环境下测试通过
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1,
"Accelerator Example")
p = wx.Panel(self)
menu = wx.Menu()
simple = menu.Append(-1, "Simple &menu item/tCtrl-M") # 修正字符显示不正常问题
accel = menu.Append(-1, "&Acc /tCtrl-A") # Creating an accelerator
menu.AppendSeparator()
exit = menu.Append(-1, "E&xit")
self.Bind(wx.EVT_MENU, self.OnSimple, simple)
self.Bind(wx.EVT_MENU, self.OnAccelerated, accel)
self.Bind(wx.EVT_MENU, self.OnExit, exit)
menuBar = wx.MenuBar()
menuBar.Append(menu, "&Menu")
self.SetMenuBar(menuBar)
acceltbl = wx.AcceleratorTable( [ #Using an accelerator table
(wx.ACCEL_CTRL, ord('Q'), exit.GetId()),#修改od()->ord()
(wx.ACCEL_CTRL, ord('B'), accel.GetId())#加入快捷键测试,与Ctrl+A作用相同
])
self.SetAcceleratorTable(acceltbl)
def OnSimple(self, event):
wx.MessageBox("You selected the simple menu item")
def OnAccelerated(self, event):
wx.MessageBox("You selected the accelerated menu item")
def OnExit(self, event):
self.Close()
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()