实战wxPython-004
菜单栏是GUI应用程序中的常见部分。菜单栏由称为菜单的对象组成。顶级菜单在菜单栏上具有自己的标签。菜单具有菜单项。菜单项是在应用程序内部执行特定操作的命令。菜单也可以具有子菜单,这些子菜单具有自己的菜单项。以下三个类用于在wxPython中创建菜单栏:wx.MenuBar,wx.Menu和 wx.MenuItem。
wx.MenuBar简介
菜单栏是在窗口的顶部可以访问的一系列菜单。其继承关系如下图:
wx.MenuBar常用方法有:
Append(self, menu, title):将菜单menu添加到菜单栏的末尾。title为菜单的标题(必须非空),执行成功返回True,否则返回False。Check(self, id, check):选中或取消选中菜单项。id为菜单项标识符,check为True时。则表示选中该菜单项,否则表示未选中该菜单项。Enable(self, id, enable):启用或禁用(灰色)菜单项。id为菜单项标识符,enable为True时。则表示启用该菜单项,否则表示禁用该菜单项。EnableTop(self, pos, enable):启用或禁用整个菜单。pos为菜单的位置,从零开始。enable为True启用菜单,False禁用菜单。FindItem(self, id):查找与给定菜单项标识符关联的菜单项对象。id为菜单项标识符。FindItemById(self, id):查找与给定菜单项标识符关联的菜单项对象。id为菜单项标识符。FindMenu(self, title):返回给定title的菜单的索引。如果此菜单栏中不存在这样的菜单,则返回NOT_FOUND。FindMenuItem(self, menuString, itemString):查找菜单名称/菜单项字符串对的菜单项ID。menuString为要查找的菜单标题。itemString为要查找的项目。Insert(self, pos, menu, title):在菜单栏给定位置插入菜单。pos为新菜单在菜单栏中的位置,menu为要添加的菜单,title为菜单的标题。Refresh(self, eraseBackground=True, rect=None):重绘菜单栏。Remove(self, pos):从菜单栏中位置pos处删除菜单并返回菜单对象-调用方负责删除该菜单对象。Replace(self, pos, menu, title): 将给定位置的菜单替换为另一个菜单。pos为新菜单在菜单栏中的位置,menu为要添加的菜单,title为菜单的标题。SetHelpString(self, id, helpString):设置与菜单项关联的帮助字符串。id为菜单项标识符,helpString为与菜单项关联的帮助字符串。SetLabel(self, id, label):设置菜单项的标签。id为菜单项标识符,label为菜单项标签。SetMenuLabel(self, pos, label):设置顶层菜单的标签。pos为菜单在菜单栏上的位置,从零开始。label为菜单标签。SetMenus(self, items):清除菜单栏中的菜单,然后添加新的菜单项items。简单菜单栏示例
在示例代码中,我们将将创建一个带有一个文件菜单的菜单栏。该菜单将只有一个菜单项。通过选择项目,应用程序退出。
import wx class Example(wx.Frame): def __init__(self, *args, **kwargs): super(Example, self).__init__(*args, **kwargs) self.InitUi() def InitUi(self): menubar = wx.MenuBar() fileMenu = wx.Menu() fileItem = fileMenu.Append(wx.ID_EXIT, '退出', '退出应用') menubar.Append(fileMenu, '文件(&F)') self.SetMenuBar(menubar) #绑定菜单项的行为 self.Bind(wx.EVT_MENU, self.OnQuit, fileItem) self.SetSize(400, 300) self.SetTitle('实战wxPython: 简单菜单示例') self.Centre() def OnQuit(self, e): self.Close() def main(): app = wx.App() window = Example(None) window.Show() app.MainLoop() if __name__ == '__main__': main()
上面的代码展示了一个菜单栏功能的最少示例。
menubar = wx.MenuBar()
首先,我们创建一个菜单栏对象。
fileMenu = wx.Menu()
接下来,我们创建一个菜单对象。
fileItem = fileMenu.Append(wx.ID_EXIT, '退出', '退出应用')
我们将菜单项添加到菜单对象中。第一个参数是菜单项的ID。第二个参数是菜单项的名称。最后一个参数定义了选择菜单项时在状态栏上显示的简短帮助字符串。在这里我们没有使用wx.MenuItem创建。而是通过Append()幕后方法创建的。该方法返回创建的菜单项。稍后将使用此引用来绑定事件。
self.Bind(wx.EVT_MENU,self.OnQuit,fileItem)
将wx.EVT_MENU菜单项的绑定到自定义 OnQuit()方法。此方法将关闭应用程序。
menubar.Append(fileMenu, '文件(&F)')self.SetMenuBar(menubar)
之后,我们将菜单添加到菜单栏中。&字符创建一个加速键。&后面的字符带有下划线。这样,可以通过Alt+F快捷方式访问菜单。最后,我们调用该SetMenuBar()方法。此方法属于wx.Frame窗口部件。它设置菜单栏。
最终运行结果如下图:
一个简单的菜单栏示例
本文知识点了解菜单栏类wx.MenuBar。创建一个具有菜单栏的wxPython程序。
请多多关注,评论,收藏,点赞,和转发。
前一篇: 开始我们的第一个wxPython程序
标签: 菜单
②文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
③文章版权归原作者所有,部分转载文章仅为传播更多信息、受益服务用户之目的,如信息标记有误,请联系站长修正。
④本站一律禁止以任何方式发布或转载任何违法违规的相关信息,如发现本站上有涉嫌侵权/违规及任何不妥的内容,请第一时间反馈。发送邮件到 88667178@qq.com,经核实立即修正或删除。