checkbox 子选项取消选中_wxPython - 怎样给一个菜单添加子菜单

本文介绍了如何使用wxPython库创建菜单、子菜单和菜单分隔符,包括wx.Menu类的方法如Append、Insert、AppendCheckItem等。通过示例展示了如何在菜单中添加常见操作、子菜单以及分隔符,用于组织和美化应用程序的菜单结构。
摘要由CSDN通过智能技术生成

实战wxPython-006

4aa41b3efcbf96065824fead0be657a5.png

在一个菜单中可以添加子菜单,子菜单之间可以添加分隔符,或者在点击鼠标右键时,需要弹出一个上下文菜单,在本文中,我们将进一步了解wx.Menu的各种功能和应用。

wx.Menu简介

菜单是项目的弹出(或下拉)列表,可以在菜单消失之前选择其中一项(单击其他位置以关闭菜单)。它可用于构造菜单栏或弹出菜单。

菜单项具有ID与之关联的整数,该整数可用于标识选择或以某种方式更改菜单项。具有特殊标识符的菜单项wx.ID_SEPARATOR 是分隔符项,没有关联的命令,而只是使分隔线出现在菜单中。

菜单项可以是 普通(normal)项,复选项(check)或单选项(radio) 。普通菜单项没有任何特殊属性,而复选项具有与其关联的布尔标志,并且当设置了标志时它们会在菜单中显示一个对勾。单选项目与复选项相似,不同之处在于,在选中某个单选项时,单选组中的所有其他菜单项都处于未选中状态。单选项组由一系列连续的单选项构成。它从此类的第一项开始,到另一种不同的项(或菜单的结尾)结束。请注意,由于单选项组是根据菜单项的位置定义的,因此在包含单选项的菜单中插入或删除菜单项可能会导致无法正常工作。

wx.Menu类继承关系如下图:

20c7ec306e24e650fda3fb63179a1f57.png

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 wximport 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)Ctrl+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()方法将子菜单附加到文件菜单。

上述事例最终运行结果如下图:

850592a361f67681adf83bacb7d52b3f.png

子菜单演示

本文知识点

  • 理解wx.Menu;
  • 如何构建子菜单;

请多多关注,评论,收藏,点赞,和转发。


前一篇: wxPython-给菜单添加图标和快捷键

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值