- 创建菜单栏 menubar = wx.MenuBar()
- 创建父菜单 menu = wx.Menu()
- 把父菜单添加到菜单栏 membar.Append(menu,u"文件")
- 添加子菜单 memu.Append(id,strName)
- self.Bind(wx.EVT_MENU,function,id)
#-*- coding:utf-8 -*-
import wx
class MenuFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,u'菜单',size=(300,300))
panel =wx.Panel(self,-1)
menubar = wx.MenuBar()
menubar1 = wx.MenuBar()
menu = wx.Menu()
menu1 = wx.Menu()
menu2 = wx.Menu()
menubar.Append(menu,u"&f文件") #Alt + f
menubar.Append(menu1,u"文件1")
menu.Append(1000,u"&o打开") #Alt + o
menu.Append(1001,u"关闭")
menu2.Append(1003,u"打开")
menu2.Append(1004,u"关闭")
menu.AppendMenu(-1,u"other",menu2) # 二级菜单
bmp = wx.Bitmap("001.png",wx.BITMAP_TYPE_PNG) #图标菜单
item = wx.MenuItem(menu,1005,u"return")
item.SetBitmap(bmp)
menu.AppendItem(item)
self.SetMenuBar(menubar)
self.Bind(wx.EVT_MENU, self.OnOpen,id=1000)
self.Bind(wx.EVT_MENU, self.OnClose, id=1001)
self.Bind(wx.EVT_MENU, self.OnOpen,id=1003)
self.Bind(wx.EVT_MENU, self.OnClose, id=1004)
self.Bind(wx.EVT_MENU, self.OnClose, id=1005)
print menu.GetMenuItems()
def OnOpen(self,event):
wx.MessageBox(u"open",u"提示")
print event.GetId()
def OnClose(self,event):
self.Close()
print event.GetId()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = MenuFrame()
frame.Show()
app.MainLoop()
2 弹出菜单
import wx
class MyPopupMenu(wx.Menu):
def __init__(self,parent):
super(MyPopupMenu,self).__init__()
self.parent = parent
mmi = wx.MenuItem(self,wx.NewId(),'MiniSize')
self.AppendItem(mmi)
self.Bind(wx.EVT_MENU, self.OnMinimize, mmi)
cmi = wx.MenuItem(self,wx.NewId(),'Close')
self.AppendItem(cmi)
self.Bind(wx.EVT_MENU, self.OnClose, cmi)
def OnMinimize(self,e):
self.parent.Iconize()
def OnClose(self,e):
self.parent.Close()
class Example(wx.Frame):
def __init__(self,*args,**kw):
super(Example,self).__init__(*args,**kw)
self.InitUI()
def InitUI(self):
self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)
self.SetSize((250, 200))
self.SetTitle('Context menu')
self.Centre()
self.Show(True)
def OnRightDown(self,e):
self.PopupMenu(MyPopupMenu(self),e.GetPosition())
print 'pos',e.GetPosition()
def main():
ex = wx.App()
Example(None)
ex.MainLoop()
if __name__ == '__main__':
main()