由浅入深和由简单到复杂,带你学习wxpython的菜单
1 菜单栏:
=======
1.1 效果图
1.2 代码: #菜单栏和水平一行菜单的设置 import wx class MyFrame(wx.Frame): def __init__(self): #窗口名称 wx.Frame.__init__(self, None, -1, "菜单menu学习-1") #第1步:调出菜单栏,实例化 menuBar = wx.MenuBar() #第2步:创建菜单栏上的菜单项目 #2-1:创建一个开始的菜单 begin = wx.Menu() # 将开始菜单添加到菜单栏上 menuBar.Append(begin, "开始") #2-2:创建一个编辑的菜单 edit = wx.Menu() # 将编辑菜单添加到菜单栏上 menuBar.Append(edit, "编辑") #2-3:创建一个关于的菜单 about = wx.Menu() #将关于菜单添加到菜单栏上 menuBar.Append(about, "关于") #挂在菜单 self.SetMenuBar(menuBar) if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
2 子菜单:
======
2.1 效果图
2.2 代码:#下拉菜单:二级和三级菜单设置 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "菜单menu学习-2") #第1步:调出菜单栏,实例化 menuBar = wx.MenuBar() #第2步:创建菜单栏上的菜单项目 #2-1:创建一个开始的菜单 begin = wx.Menu() # 将开始菜单添加到菜单栏上 menuBar.Append(begin, "开始") #二级菜单设置 # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单 new= begin.Append(-1, "新建", "新建一个文件") #begin.AppendSeparator() #分隔符 # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单 exit = begin.Append(-1, "退出","退出窗口") #2-2:创建一个编辑的菜单 edit = wx.Menu() # 将编辑菜单添加到菜单栏上 menuBar.Append(edit, "编辑") #编辑的二级菜单 #编辑的二级菜单:剪切 jianqie= edit.Append(-1, "剪切", "内容剪切") #编辑的二级菜单:复制 fuzhi = edit.Append(-1, "复制","内容复制") #编辑的二级菜单:粘贴 zhantie= edit.Append(-1, "粘贴", "内容粘贴") #编辑的二级菜单:撤销 chexiao = edit.Append(-1, "撤销","撤销操作") #2-3:创建一个关于的菜单 about = wx.Menu() #将关于菜单添加到菜单栏上 menuBar.Append(about, "关于") #二级菜单设置 # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单 renew= about.Append(-1, "更新", "更新软件") #about.AppendSeparator() #分隔符 # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单 vesion = about.Append(-1, "版本","该软件的版本信息") # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单 #meself = about.Append(-1, "个人信息","个人信息") #如果要在个人信息的下拉菜单,再建下拉菜单,这样就会出错 #meself = about.Append(-1, "个人信息","个人信息") #注释点 #新建一个个人信息菜单,实例化 meself = wx.Menu() #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上 about.AppendSubMenu(meself,"个人信息") #注意数字:100-200-300,只是区分子菜单,防止搞混 #也可以1-2-3 address = wx.MenuItem(meself, 1, text="地址") meself.Append(address) xueli = wx.MenuItem(meself, 2, text="学历") meself.Append(xueli) age = wx.MenuItem(meself, 3, text="年龄") meself.Append(age) #挂在菜单 self.SetMenuBar(menuBar) if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
3 快捷键和类型:
============
3.1 效果图
3.2 代码:#菜单快捷键设置和类型 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "菜单menu学习-3") #第1步:调出菜单栏,实例化 menuBar = wx.MenuBar() #第2步:创建菜单栏上的菜单项目 #2-1:创建一个开始的菜单 begin = wx.Menu() # 将开始菜单添加到菜单栏上 menuBar.Append(begin, "开始") #二级菜单设置 # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单 new= begin.Append(-1, "新建 Ctrl+N", "新建一个文件") #begin.AppendSeparator() #分隔符 # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单 exit = begin.Append(-1, "退出 Ctrl+E","退出窗口") #2-2:创建一个编辑的菜单 edit = wx.Menu() # 将编辑菜单添加到菜单栏上 menuBar.Append(edit, "编辑") #编辑的二级菜单 #编辑的二级菜单:剪切 jianqie= edit.Append(-1, "剪切 Ctrl+S", "内容剪切") #编辑的二级菜单:复制 fuzhi = edit.Append(-1, "复制 Ctrl+C","内容复制") #编辑的二级菜单:粘贴 zhantie= edit.Append(-1, "粘贴 Ctrl+P", "内容粘贴") #编辑的二级菜单:撤销 chexiao = edit.Append(-1, "撤销 Ctrl+R","撤销操作") #2-3:创建一个关于的菜单 about = wx.Menu() #将关于菜单添加到菜单栏上 menuBar.Append(about, "关于") #二级菜单设置 # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单 renew= about.Append(-1, "更新 Ctrl+P", "更新软件") #about.AppendSeparator() #分隔符 # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单 vesion = about.Append(-1, "版本 Ctrl+V","该软件的版本信息") # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单 #新建一个个人信息菜单,实例化 meself = wx.Menu() #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上 about.AppendSubMenu(meself,"个人信息") #注意数字:100-200-300,只是区分子菜单,防止搞混 #也可以1-2-3 address = wx.MenuItem(meself, 1, text="地址", kind=wx.ITEM_NORMAL) meself.Append(address) xueli = wx.MenuItem(meself, 2, text="学历", kind=wx.ITEM_NORMAL) meself.Append(xueli) age = wx.MenuItem(meself, 3, text="年龄", kind=wx.ITEM_NORMAL) meself.Append(age) #挂在菜单 self.SetMenuBar(menuBar) if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
4 菜单栏的功能定义和弹出框,显示状态栏和设置
=====================================
4.1 效果图:
4.2 代码: #菜单的功能定义和弹出框 #显示状态栏和设置 import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "菜单menu学习-4") #第1步:调出菜单栏,实例化 menuBar = wx.MenuBar() #第2步:创建菜单栏上的菜单项目 #2-1:创建一个开始的菜单 begin = wx.Menu() # 将开始菜单添加到菜单栏上 menuBar.Append(begin, "开始") #二级菜单设置 # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单 new= begin.Append(-1, "新建 Ctrl+N", "新建一个文件") #begin.AppendSeparator() #分隔符 # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单 exit = begin.Append(-1, "退出 Ctrl+E","退出窗口") #二级菜单的功能绑定 self.Bind(wx.EVT_MENU, self.OnNew, new) self.Bind(wx.EVT_MENU, self.OnExit, exit) #2-2:创建一个编辑的菜单 edit = wx.Menu() # 将编辑菜单添加到菜单栏上 menuBar.Append(edit, "编辑") #编辑的二级菜单 #编辑的二级菜单:剪切 jianqie= edit.Append(-1, "剪切 Ctrl+S", "内容剪切") #编辑的二级菜单:复制 fuzhi = edit.Append(-1, "复制 Ctrl+C","内容复制") #编辑的二级菜单:粘贴 zhantie= edit.Append(-1, "粘贴 Ctrl+P", "内容粘贴") #编辑的二级菜单:撤销 chexiao = edit.Append(-1, "撤销 Ctrl+R","撤销操作") #2-3:创建一个关于的菜单 about = wx.Menu() #将关于菜单添加到菜单栏上 menuBar.Append(about, "关于") #二级菜单设置 # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单 renew= about.Append(-1, "更新 Ctrl+P", "更新软件") #about.AppendSeparator() #分隔符 # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单 vesion = about.Append(-1, "版本 Ctrl+V","该软件的版本信息") # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单 #新建一个个人信息菜单,实例化 meself = wx.Menu() #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上 about.AppendSubMenu(meself,"个人信息") #注意数字:100-200-300,只是区分子菜单,防止搞混 #也可以1-2-3 address = wx.MenuItem(meself, 1, text="地址", kind=wx.ITEM_NORMAL) meself.Append(address) xueli = wx.MenuItem(meself, 2, text="学历", kind=wx.ITEM_NORMAL) meself.Append(xueli) age = wx.MenuItem(meself, 3, text="年龄", kind=wx.ITEM_NORMAL) meself.Append(age) #挂在菜单 self.SetMenuBar(menuBar) #显示状态栏 self.CreateStatusBar() #显示状态栏的初始文字 self.SetStatusText("状态栏") #注释掉的话,初始状态栏的文字就是空的 #弹出对话框 def OnNew(self, event): wx.MessageBox("新建一个新的文件,这是一个弹出框") #系统退出 def OnExit(self, event): self.Close() if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
5 菜单类型kind
===========
5.1 效果图
5.2 代码:#kind = wx.ITEM_RADIO,前面是圆点#默认#kind = wx.ITEM_NORMAL #也可以去除 #address = wx.MenuItem(meself, 1, text="地址", kind=wx.ITEM_NORMAL) address = wx.MenuItem(meself, 1, text="地址")
6 右键单击弹出菜单
===============
6.1 效果图
6.2 代码: #右键单击菜单 import wx #右键菜单设置 class MyPopupMenu(wx.Menu): def __init__(self,parent): super(MyPopupMenu,self).__init__() self.parent = parent #右键菜单项目:最小化 mmi = wx.MenuItem(self,-1,"MiniSize") self.Append(mmi) self.Bind(wx.EVT_MENU, self.OnMinimize, mmi) #右键菜单项目:关闭 cmi = wx.MenuItem(self,-1,"Close") self.Append(cmi) self.Bind(wx.EVT_MENU, self.OnClose, cmi) #最小化 def OnMinimize(self,e): self.parent.Iconize() #关闭 def OnClose(self,e): self.parent.Close() class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "菜单menu学习-6") #第1步:调出菜单栏,实例化 menuBar = wx.MenuBar() #第2步:创建菜单栏上的菜单项目 #2-1:创建一个开始的菜单 begin = wx.Menu() # 将开始菜单添加到菜单栏上 menuBar.Append(begin, "开始") #二级菜单设置 # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单 new= begin.Append(-1, "新建 Ctrl+N", "新建一个文件") # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单 exit = begin.Append(-1, "退出 Ctrl+E","退出窗口") #二级菜单的功能绑定 self.Bind(wx.EVT_MENU, self.OnNew, new) self.Bind(wx.EVT_MENU, self.OnExit, exit) #2-2:创建一个编辑的菜单 edit = wx.Menu() # 将编辑菜单添加到菜单栏上 menuBar.Append(edit, "编辑") #编辑的二级菜单 #编辑的二级菜单:剪切 jianqie= edit.Append(-1, "剪切 Ctrl+S", "内容剪切",kind = wx.ITEM_RADIO) #编辑的二级菜单:复制 fuzhi = edit.Append(-1, "复制 Ctrl+C","内容复制") #编辑的二级菜单:粘贴 zhantie= edit.Append(-1, "粘贴 Ctrl+P", "内容粘贴") #编辑的二级菜单:撤销 chexiao = edit.Append(-1, "撤销 Ctrl+R","撤销操作") #2-3:创建一个关于的菜单 about = wx.Menu() #将关于菜单添加到菜单栏上 menuBar.Append(about, "关于") #二级菜单设置 # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单 renew= about.Append(-1, "更新 Ctrl+P", "更新软件") # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单 vesion = about.Append(-1, "版本 Ctrl+V","该软件的版本信息") # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单 #新建一个个人信息菜单,实例化 meself = wx.Menu() #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上 about.AppendSubMenu(meself,"个人信息") address = wx.MenuItem(meself, 1, text="地址") meself.Append(address) xueli = wx.MenuItem(meself, 2, text="学历", kind=wx.ITEM_NORMAL) meself.Append(xueli) age = wx.MenuItem(meself, 3, text="年龄", kind=wx.ITEM_NORMAL) meself.Append(age) #挂在菜单 self.SetMenuBar(menuBar) #显示状态栏 self.CreateStatusBar() #显示状态栏的初始文字 self.SetStatusText("状态栏") #注释掉的话,初始状态栏的文字就是空的 #绑定右键菜单,调出函数 self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown) #弹出对话框 def OnNew(self, event): wx.MessageBox("新建一个新的文件,这是一个弹出框") #系统退出 def OnExit(self, event): self.Close() #右键菜单 def OnRightDown(self,e): self.PopupMenu(MyPopupMenu(self),e.GetPosition()) if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
wxpython的菜单设置基本完成。
可能会有菜单的图标设置,这个本机是deepin-linux操作系统,我失败了,就不放上上面了,其实很简单。