基本上Menubar是由Menu組成的, 而Menu裡面則有很多的Menu item, 在wxPython裡面就是用這樣的方式來加入一個Menubar.
- 建立MenuBar
- 建立Menus
- 建立Menu items
- 將建立的Menu items加入Menu中
- 將建立好的Menus加入MenuBar
- 在視窗中(Frame)加入MenuBar
# -*- coding: cp950 -*-在建立Menuitem的function
import wx
#建立Frame
class SimpleMenu(wx.Frame):
def __init__(self, parent, id, title):
#呼叫wx.Frame的constructor
wx.Frame.__init__(self, parent, id, title, size=(250, 150))
#建立MenuBar
menu_bar = wx.MenuBar()
#建立Menu
menu = wx.Menu()
#建立Menu item
menu_item = wx.MenuItem(menu, 1, '&Quit\tCtrl+Q')
#把Menu item加入Menu裡面
menu.AppendItem(menu_item)
#把Menu item被按下對應到某個function
self.Bind(wx.EVT_MENU, self.OnQuit, id=1)
#把Menu加入MenuBar中
menu_bar.Append(menu, '&File')
#在視窗中加入MenuBar
self.SetMenuBar(menu_bar)
#讓視窗產生在螢幕中間
self.Centre()
#顯示視窗
self.Show(True)
#當按下Quit menu item時, 關閉視窗
def OnQuit(self,event):
self.Close()
#程式主要部分
if __name__ == "__main__": #確定這個程式是自己執行, 而非被呼叫
#建立wx.App
app = wx.App()
#建立並顯示視窗
SimpleMenu(None, -1, 'simple menu example')
#等待event
app.MainLoop()
menu_item = wx.MenuItem(menu, 1, '&Quit\tCtrl+Q')第二個參數是那個Menuitem的id,
用來對應到下面讓這個Menuitem被按下時執行某個function裡的id參數:
self.Bind(wx.EVT_MENU, self.OnQuit, id=1)其他功能 :
在menu加入submenu : (submenu也是wx.Menu)
menu.AppendMenu(-1, 'I&mport', submenu)menu separator :
menu.AppendSeparator()menu item check類型:
menu.Check(ID_STAT, True)
self.shst = menu.Append(ID_STAT, 'Show statubar', 'Show Statusbar', kind=wx.ITEM_CHECK)
#被檢查menu是否被checked
def ToggleStatusBar(self, event):
if self.shst.IsChecked():
self.statusbar.Show()
else:
self.statusbar.Hide()
參考資料 :
The wxPython tutorial
沒有留言:
張貼留言