擅长:python、mysql、java
<p>使用partial将一个选项(一些唯一的ID)发送到一个公共函数。如果有很多菜单项,请使用for()循环,将返回值存储在列表中(而不是菜单项_x),并增加一个计数器以发送给函数。在</p>
<pre><code>import wx
from functools import partial
class MenuCallback(object):
def __init__(self, parent, id):
self.frame=wx.Frame(None)
menu_bar = wx.MenuBar()
menu1 = wx.Menu()
menu_item_1 = menu1.Append(-1, "&Option #1")
menu_item_2 = menu1.Append(-1, "&Option #2")
menu_item_3 = menu1.Append(-1, "&Exit...")
menu_bar.Append(menu1, "&File")
self.frame.SetMenuBar(menu_bar)
self.frame.Bind(wx.EVT_MENU, partial(self.option_chosen, 1),
menu_item_1)
self.frame.Bind(wx.EVT_MENU, partial(self.option_chosen, 2),
menu_item_2)
self.frame.Bind(wx.EVT_MENU, self.on_close, menu_item_3)
self.frame.Show(True)
def option_chosen(self, number, event):
print "option chosen =", number
def on_close(self, event):
self.frame.Close(True)
app = wx.PySimpleApp()
MC=MenuCallback(parent=None, id=-1)
app.MainLoop()
</code></pre>