Menu Item, Menu & MenuBar类

正下方顶层窗口的标题栏中保留了一个水平条,以显示一系列菜单。 这就是 wx.MenuBar 类在 wxPython 中 API 的对象。

wx.Menu类的一个对象被添加到菜单栏。它也用于创建上下文菜单和弹出菜单。每个菜单可以包含一个或多个wx.MenuItem对象或级联Menu对象。

wx.MenuBar类有一个参数的构造函数,此外还有一个默认的。
wx.MenuBar()  

wx.MenuBar(n, menus, titles, style) 

参数“n”表示的菜单的数目。Menu是菜单和标题的数组和字符串数组。如果style参数设置为wx.MB_DOCKABLE,菜单栏可以停靠。

以下是wx.MenuBar类的方法列表 -
S.N.
方法和说明
1

Append()

添加菜单对象到工具栏
2

Check()

选中或取消选中菜单
3

Enable()

启用或禁用菜单
4

Remove()

去除工具栏中的菜单
wx.Menu类对象是一个或多个菜单项,其中一个可被用户选择的下拉列表。
下表显示了wx.Menu类经常需要的方法-
S.N.
方法和说明
1

Append()

在菜单增加了一个菜单项
2

AppendMenu()

追加一个子菜单
3

AppendRadioItem()

追加可选当选项
4

AppendCheckItem()

追加一个可检查的菜单项
5

AppendSeparator()

添加一个分隔线
6

Insert()

在给定的位置插入一个新的菜单
7

InsertRadioItem()

在给定位置插入单选项
8

InsertCheckItem()

在给定位置插入新的检查项
9

InsertSeparator()

插入分隔行
10

Remove()

从菜单中删除一个项
11

GetMenuItems()

返回菜单项列表
一个菜单项目,可直接使用 Append() 函数添加,或 wx.MenuItem 类的一个对象被追加。
wx.Menu.Append(id, text, kind)
  
Item = Wx.MenuItem(parentmenu, id, text, kind) 
wx.Menu.Append(Item)
要定义一个菜单项,菜单要被添加必须提及。
wxPython中有大量的标准的ID被分配给标准菜单项。在某些操作系统平台上,它们与标准图标也关联。
wx.ID_SEPARATOR
wx.ID_ANY
wx.ID_OPEN
wx.ID_CLOSE
wx.ID_NEW
wx.ID_SAVE
wx.ID_SAVEAS
wx.ID_EDIT
wx.ID_CUT
wx.ID_COPY
wx.ID_PASTE
然而,任何独一无二的整数可以被分配 ID。text参数是它的标题。类参数采用以下之一-
S.N. 参数 & 描述
1

wx.ITEM_NORMAL

普通菜单项
2

wx.ITEM_CHECK

检查(或切换)菜单项
3

wx.ITEM_RADIO

单选菜单项
wx.Menu类也有 AppendRadioItem()和 AppendCheckItem()不需要各种参数。
菜单项可以设置为显示图标或快捷方式。 wx.MenuItem类SetBitmap()函数需要要显示的位图对象。
wx.MenuItem.SetBitmap(wx.Bitmap(image file))
EVT_MENU事件绑定有助于处理菜单选择。
self.Bind(wx.EVT_MENU, self.menuhandler)

实例

下面的例子演示了wxPython的上述大部分的菜单系统的特征。它显示在菜单栏中显示一个文件菜单。普通菜单项,子菜单,单选项和检查项加入。菜单项也带有一个图标显示。

事件处理函数,当被调用时检索与事件关联的ID,并且可以进一步处理。例如,如果“新建”菜单项被选中,这是回显示在框架(frame)上的文本框中。
Menu.py 完整的代码如下 -
import wx  

class Mywin(wx.Frame): 
            
   def __init__(self, parent, title): 
      super(Mywin, self).__init__(parent, title = title, size = (400,300))  
      self.InitUI() 
         
   def InitUI(self):    
      menubar = wx.MenuBar() 
		
      fileMenu = wx.Menu() 
      newitem = wx.MenuItem(fileMenu,wx.ID_NEW, text = "New",kind = wx.ITEM_NORMAL) 
      newitem.SetBitmap(wx.Bitmap("new.bmp")) 
      fileMenu.AppendItem(newitem) 
		
      fileMenu.AppendSeparator()
		
      editMenu = wx.Menu() 
      copyItem = wx.MenuItem(editMenu, 100,text = "copy",kind = wx.ITEM_NORMAL)
      copyItem.SetBitmap(wx.Bitmap("copy.bmp")) 
		
      editMenu.AppendItem(copyItem) 
      cutItem = wx.MenuItem(editMenu, 101,text = "cut",kind = wx.ITEM_NORMAL) 
      cutItem.SetBitmap(wx.Bitmap("cut.bmp")) 
		
      editMenu.AppendItem(cutItem) 
      pasteItem = wx.MenuItem(editMenu, 102,text = "paste",kind = wx.ITEM_NORMAL) 
      pasteItem.SetBitmap(wx.Bitmap("paste.bmp")) 
		
      editMenu.AppendItem(pasteItem) 
      fileMenu.AppendMenu(wx.ID_ANY, "Edit", editMenu) 
      fileMenu.AppendSeparator() 
         
      radio1 = wx.MenuItem(fileMenu, 200,text = "Radio1",kind = wx.ITEM_RADIO) 
      radio2 = wx.MenuItem(fileMenu, 300,text = "radio2",kind = wx.ITEM_RADIO) 
		
      fileMenu.AppendItem(radio1) 
      fileMenu.AppendItem(radio2) 
      fileMenu.AppendSeparator() 
         
      fileMenu.AppendCheckItem(103,"Checkable") 
      quit = wx.MenuItem(fileMenu, wx.ID_EXIT, '&Quit\tCtrl+Q') 
		
      fileMenu.AppendItem(quit) 
      menubar.Append(fileMenu, '&File') 
		
      self.SetMenuBar(menubar) 
      self.text = wx.TextCtrl(self,-1, style = wx.EXPAND|wx.TE_MULTILINE) 
      self.Bind(wx.EVT_MENU, self.menuhandler) 
      self.SetSize((350, 250)) 
      self.Centre() 
      self.Show(True)
		
   def menuhandler(self, event): 
      id = event.GetId() 
      if id == wx.ID_NEW: 
         self.text.AppendText("new"+"\n")
			
ex = wx.App() 
Mywin(None,'MenuBar Demo - xuhuhu.com') 
ex.MainLoop() 

上面的代码产生下面的输出 -


上一篇: wxPython Slider类 下一篇: wxPython ToolBar类