在一个菜单中可以添加子菜单,子菜单之间可以添加分隔符,或者在点击鼠标右键时,需要弹出一个上下文菜单,在本文中,我们将进一步了解wx.Menu的各种功能和应用。
wx.Menu简介
菜单是项目的弹出(或下拉)列表,可以在菜单消失之前选择其中一项(单击其他位置以关闭菜单)。它可用于构造菜单栏或弹出菜单。
菜单项具有ID与之关联的整数,该整数可用于标识选择或以某种方式更改菜单项。具有特殊标识符的菜单项wx.ID_SEPARATOR 是分隔符项,没有关联的命令,而只是使分隔线出现在菜单中。
菜单项可以是 普通(normal)项,复选项(check)或单选项(radio) 。普通菜单项没有任何特殊属性,而复选项具有与其关联的布尔标志,并且当设置了标志时它们会在菜单中显示一个对勾。单选项目与复选项相似,不同之处在于,在选中某个单选项时,单选组中的所有其他菜单项都处于未选中状态。单选项组由一系列连续的单选项构成。它从此类的第一项开始,到另一种不同的项(或菜单的结尾)结束。请注意,由于单选项组是根据菜单项的位置定义的,因此在包含单选项的菜单中插入或删除菜单项可能会导致无法正常工作。
wx.Menu类继承关系如下图:
wx.Menu常用方法:
- Append (self, id, item=””, helpString=””, kind=ITEM_NORMAL):添加菜单项。id为菜单命令标识符;item为出现在菜单项上的字符串;helpString为与项目关联的可选帮助字符串。kind可能是 ITEM_SEPARATOR, ITEM_NORMAL, ITEM_CHECK 或 ITEM_RADIO。
- Append (self, id, item, subMenu, helpString=””):添加一个子菜单。id为菜单命令标识符。subMenu为添加的子菜单;item为出现在菜单项上的字符串;helpString为与项目关联的可选帮助字符串。
- Append (self, menuItem):添加菜单项对象。
- AppendCheckItem(self, id, item, help=””):在菜单末尾添加一个复选菜单项。
- AppendRadioItem(self, id, item, help=””):在菜单末尾添加一个单选菜单项。
- AppendSeparator(self):在菜单末尾添加分隔符。
- AppendSubMenu(self, submenu, text, help=””):将给定的submenu添加 到此菜单。
- Break(self):在菜单中插入一个分隔符,使下一个附加菜单项出现在新列中。
- Check(self, id, check):选中或取消选中菜单项。
- Delete (self, id):从菜单中删除指定id的菜单项。
- Delete (self, item):从菜单中删除菜单项item。
- DestroyItem (self, id):从菜单中删除指定id的菜单项,并释放该菜单项。
- DestroyItem (self, item):从菜单中删除菜单项item,并释放该菜单项。
- Enable(self, id, enable):启用或禁用(灰色)菜单项。
- FindChildItem(self, id):查找与给定菜单项标识符关联的菜单项对象,以及与菜单项相关的位置(可选)。
- FindItem (self, id):查找与给定菜单项标识符以及(可选)其所属的(子)菜单关联的菜单项对象。
- FindItemById(self, id):查找与给定菜单项标识符关联的菜单项对象。
- FindItemByPosition(self, position):返回 给定的 wx.MenuItem在菜单中的位置。
- Insert (self, pos, id, item=””, helpString=””, kind=ITEM_NORMAL):在位置pos之前插入菜单项item。
- Insert (self, pos, id, text, submenu, help=””):在位置pos之前插入给定的子submenu。
- InsertCheckItem(self, pos, id, item, helpString=””):在给定位置插入一个复选菜单项。
- InsertRadioItem(self, pos, id, item, helpString=””):在给定位置插入一个单选菜单项。
- InsertSeparator(self, pos):在给定位置插入分隔符。
- Remove(self, item):从菜单中删除菜单项,但不释放菜单项对象。
- SetLabel(self, id, label):设置菜单项的标签。
- SetTitle(self, title):设置菜单的标题。
子菜单和分隔符
菜单可以有一个子菜单。这样可以将类似的命令分组。例如,我们可以将隐藏/显示各种工具栏(例如个人栏,地址栏,状态栏或导航栏)的命令放置在称为工具栏的子菜单中。在菜单中,我们可以使用分隔符来分隔命令。这是一条简单的线。通常的做法是使用单个分隔符将“新建”,“打开”,“保存”等命令与“打印”,“打印预览”等命令分开。在下面示例中,将看到如何创建子菜单和菜单分隔符。
import wx
import os
class Example(wx.Frame):
def __init__(self, *args, **kwargs):
super(Example, self).__init__(*args, **kwargs)
self.SetTitle('实战wxPython: 子菜单和分隔符')
self.SetSize(400, 300)
self.InitUi()
self.Centre()
def InitUi(self):
menubar = wx.MenuBar()
fileMenu = wx.Menu()
fileMenu.Append(wx.ID_NEW, '新建(&N)')
fileMenu.Append(wx.ID_OPEN, '打开(&O)')
fileMenu.Append(wx.ID_SAVE, '保存(&S)')
fileMenu.AppendSeparator()
subImport = wx.Menu()
subImport.Append(wx.ID_ANY, '导入文章列表...')
subImport.Append(wx.ID_ANY, '导入书签...')
subImport.Append(wx.ID_ANY, '导入邮件...')
fileMenu.AppendMenu(wx.ID_ANY, '导入(&)', subImport)
qmi = wx.MenuItem(fileMenu, wx.ID_EXIT, '退出(&Q)\tCtrl+W')
fileMenu.Append(qmi)
self.Bind(wx.EVT_MENU, self.OnQuit, qmi)
menubar.Append(fileMenu, '文件(&F)')
self.SetMenuBar(menubar)
def OnQuit(self, e):
self.Close()
def main():
app = wx.App()
window = Example(None)
window.Show()
app.MainLoop()
if __name__ == '__main__':
main()
在上面的示例中,我们创建了“新建”,“打开”和“保存”标准菜单项。这些与带有水平分隔符的子菜单分开。子菜单具有其他三个菜单项。
fileMenu.Append(wx.ID_NEW, '新建(&N)')
fileMenu.Append(wx.ID_OPEN, '打开(&O)')
fileMenu.Append(wx.ID_SAVE, '保存(&S)')
这里我们有三个常见的菜单项:新建,打开和保存。
fileMenu.AppendSeparator()
添加一个菜单分隔符。
subImport = wx.Menu()
subImport.Append(wx.ID_ANY, '导入文章列表...')
subImport.Append(wx.ID_ANY, '导入书签...')
subImport.Append(wx.ID_ANY, '导入邮件...')
子菜单也是wx.Menu。三个菜单项添加到菜单。AppenMenu()方法将子菜单附加到文件菜单。
上述事例最终运行结果如下图:
子菜单演示
本文知识点
- 理解wx.Menu;
- 如何构建子菜单;
前一篇: 实战wxPython: 005 – 给菜单添加图标和快捷键
今天的文章wxpython自定义控件_python编写菜单程序分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79833.html