菜单工具栏wxPython菜单与工具栏基础示例
這兩天一直在學習菜單工具欄之類的問題,上午正好有機會和大家討論一下.
????
????
1.基本的api介紹
Package wx :: Class Menu Type Menu Method Summary Menu __init__(self, title, style) __repr__(self) MenuItem Append(self, id, text, help, kind) MenuItem AppendCheckItem(self, id, text, help) MenuItem AppendItem(self, item) MenuItem AppendMenu(self, id, text, submenu, help) Package wx :: Class MenuBar Type MenuBar Window __init__(self, parent, id, pos, size, style, name) Construct and show a generic Window. __repr__(self) bool Append(self, menu, title) Attach(self, frame) Check(self, id, check) Detach(self) bool Enable(self, enable) Enable or disable the window for user input. EnableTop(self, pos, enable) Package wx :: Class EvtHandler Type EvtHandler EvtHandler __init__(self) __repr__(self) AddPendingEvent(self, event) Bind(self, event, handler, source, id, id2)????
2.簡單菜單
????在我們的第一個例子中,我們將創立一個menubar,一個文件菜單。菜單將只有一個菜單項。通過選擇項應用程序退出。
????示例代碼如下:
import wx class Example(wx.Frame):def __init__(self,*args,**kw):wx.Frame.__init__(self,None)def InitUI(self):menuBar = wx.MenuBar()filemenu = wx.Menu()fitem = filemenu.Append(001,"exit","Quit Applications")fitem1 = filemenu.Append(002,"002","Quit Applications")menuBar.Append(filemenu,"&File")self.SetMenuBar(menuBar)self.Bind(wx.EVT_MENU, self.OnQuit, fitem)self.SetSize((400,250))self.SetTitle("SimpleMenu")self.Center()self.Show()def OnQuit(self,e):self.Close()def main():app = wx.App()exa = Example(None)exa.InitUI()app.MainLoop() if __name__ == '__main__':main()????這是一個以最小的菜單功能小例子。
menubar = wx.MenuBar()首先我們創立一個menubar對象。
fileMenu = wx.Menu()接下來,我們創立一個菜單對象。
fitem = fileMenu.Append(wx.ID_EXIT, 'Quit', 'Quit application')
我們追加到菜單項的菜單對象。第一個參數是菜單項的ID。標準ID會自動添加一個圖標和快捷(在windows上沒有出現圖標,也不能用快捷鍵)。 CTRL + Q在我們的例子。第二個參數是菜單項的名稱。最后一個參數定義狀態欄上顯示的菜單項被選中時,簡短的幫助字符串。在這里,我們沒有創造出wx.MenuItem明確。它是幕后的append()方法創立。該方法返回創立的菜單項。此參考將使用后綁定事件。
self.Bind(wx.EVT_MENU, self.OnQuit, fitem)
我們綁定菜單項wx.EVT_MENU的的的定制OnQuit()方法。這類方法將關閉應用程序。
menubar.Append(fileMenu, '&File')
self.SetMenuBar(menubar)
之后,我們追加到菜單欄菜單。 &字符創立一個快捷鍵。后面的字符下劃線。這類方法是通過按Alt + F快捷拜訪菜單(windows上似乎不能用)。最后,我們吶喊的SetMenuBar()方法。這類方法屬于wx.Frame的部件。它設置的菜單欄。
????運行示例圖
????
????
????
3.快捷鍵與圖標
????在這個例子中,會手動的創立一個快捷鍵與圖標,如下圖所示:
????
????示例代碼如下:
import wxAPP_EXIT = 1class Example(wx.Frame):def __init__(self,*args,**kw):wx.Frame.__init__(self,None)def InitUI(self):menuBar = wx.MenuBar()filemenu = wx.Menu()qmi = wx.MenuItem(filemenu,APP_EXIT,"&Quit\tCtrl+Q")bitm = wx.Bitmap("my.png")bitm.SetSize(size=(20,20))qmi.SetBitmap(bitm)filemenu.AppendItem(qmi)self.Bind(wx.EVT_MENU, self.OnQuit, id=APP_EXIT)menuBar.Append(filemenu, '&File')self.SetMenuBar(menuBar)self.SetSize((250, 200))self.SetTitle('Icons and shortcuts')self.Centre()self.Show(True)def OnQuit(self, e):self.Close()def main():app = wx.App()exa = Example(None)exa.InitUI()app.MainLoop() if __name__ == '__main__':main()????
4.子菜單和離開符
????每個菜單,也可以有一個子菜單。這樣我們就可以把成組類似的命令。例如,我們可以將像個人欄,地址欄,狀態欄或導航欄,將工具欄子菜單隱藏/顯示各種工具欄的命令。在菜單中,我們可以逗號離開一個離開的命令。這是一個簡單的線條。常見的做法是單獨的命令,如新建,打開,保存,如打印,打印預覽命令與一個單一的分離。在我們的例子中,我們將看到,我們如何可以創立子菜單和菜單離開
????示例圖如下:
????
????示例代碼:
import wx class Example(wx.Frame):def __init__(self,*args,**kw):wx.Frame.__init__(self,None)def InitUI(self):menuBar = wx.MenuBar()fileMenu = wx.Menu()fileMenu.Append(wx.ID_NEW,"&New")fileMenu.Append(wx.ID_OPEN, '&Open')fileMenu.Append(wx.ID_SAVE, '&Save')fileMenu.AppendSeparator()imp = wx.Menu()imp.Append(wx.ID_ANY, 'Import newsfeed list...')imp.Append(wx.ID_ANY, 'Import bookmarks...')imp.Append(wx.ID_ANY, 'Import mail...')qmi = wx.MenuItem(fileMenu, wx.ID_EXIT, '&Quit\tCtrl+W')fileMenu.AppendMenu(wx.ID_ANY, 'I&mport', imp) fileMenu.AppendItem(qmi)menuBar.Append(fileMenu, '&File')self.SetMenuBar(menuBar)self.Bind(wx.EVT_MENU, self.OnQuit, qmi)self.SetSize((400,250))self.SetTitle("SimpleMenu")#self.Centre()self.Center()self.Show()def OnQuit(self,e):self.Close()def main():app = wx.App()ex = Example(None)ex.InitUI()app.MainLoop() if __name__ == '__main__':main() 每日一道理那蝴蝶花依然花開花落,而我心中的蝴蝶早已化作雄鷹飛向了廣闊的藍天。
????
5.復選菜單Check menu item
????There are tree kinds of menu items. 它們有三種
normal item
check item
radio item
????在接下來的例子中,我們將演示如何檢查菜單項。一個檢查菜單項是視覺上表現為一個滴答在菜單。
????效果圖示:
????
????示例代碼:
import wxclass Example(wx.Frame):def __init__(self,*args,**kw):wx.Frame.__init__(self,None);def InitUI(self):menuBar = wx.MenuBar()filemenu = wx.Menu()viewmenu = wx.Menu()self.shst = viewmenu.Append(wx.ID_ANY,"ShowStatubar","ShowStatubar",kind=wx.ITEM_CHECK)self.shtl = viewmenu.Append(wx.ID_ANY,"ShowToolBar","ShowToolBar",kind=wx.ITEM_CHECK)viewmenu.Check(self.shst.GetId(),True)viewmenu.Check(self.shtl.GetId(),True)self.Bind(wx.EVT_MENU, self.ToggleStatuBar, self.shst)self.Bind(wx.EVT_MENU, self.ToggleToolBar, self.shtl)menuBar.Append(filemenu, '&File')menuBar.Append(viewmenu, '&View')self.SetMenuBar(menuBar)self.toolbar = self.CreateToolBar()bitm = wx.Bitmap("my.png")bitm.SetSize(size=(20,20))self.toolbar.AddLabelTool(1,'',bitm)self.toolbar.Realize()self.statusbar = self.CreateStatusBar()self.statusbar.SetStatusText('Ready')self.SetSize((350, 250))self.SetTitle('Check menu item')self.Centre()self.Show(True)def ToggleStatuBar(self,e):if self.shst.IsChecked():self.statusbar.Show()else:self.statusbar.Hide()def ToggleToolBar(self, e):if self.shtl.IsChecked():self.toolbar.Show()else:self.toolbar.Hide() def main():app = wx.App()exa = Example(None)exa.InitUI()app.MainLoop() if __name__ == '__main__':main()????
6.右鍵菜單Context menu
????上下文菜單在某些情況下出現的命令的列表。例如,在Firefox網頁瀏覽器,當我們在網頁上右擊,我們失掉一個上下文菜單。在這里,我們可以從新載入頁面,回去或查看頁面的源代碼。如果我們右鍵單擊工具欄上,我們失掉另一個管理工具欄的上下文菜單。偶然也被稱為上下文菜單彈出菜單。
????運行效果圖:
????
????示例代碼:
import wx class MyPopupMenu(wx.Menu):def __init__(self,parent):super(MyPopupMenu,self).__init__()self.parent = parentmmi = wx.MenuItem(self,wx.NewId(),'MiniSize')self.AppendItem(mmi)self.Bind(wx.EVT_MENU, self.OnMinimize, mmi)cmi = wx.MenuItem(self,wx.NewId(),'Close')self.AppendItem(cmi)self.Bind(wx.EVT_MENU, self.OnClose, cmi)def OnMinimize(self,e):self.parent.Iconize()def OnClose(self,e):self.parent.Close()class Example(wx.Frame):def __init__(self,*args,**kw):wx.Frame.__init__(self,None);def InitUI(self):self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)self.SetSize((250, 200))self.SetTitle('Context menu')self.Centre()self.Show(True)def OnRightDown(self,e):self.PopupMenu(MyPopupMenu(self),e.GetPosition())def main():app = wx.App()exa = Example(None)exa.InitUI()app.MainLoop() if __name__ == '__main__':main()????
????參考:
wxPython中文教程 簡單入門加實例????wxPython菜單與工具欄
????如何從新設置Bitmap的巨細?http://social.msdn.microsoft.com/Forums/pt-BR/ce4e0b9e-549f-4fb7-a107-a1c3a37839dc/bitmap
????
????
文章結束給大家分享下程序員的一些笑話語錄: 一條狗在街上閑逛,看見櫥窗里一張告示:「招聘程序員。會編程,有團隊精神,至少精通兩種語言。均等機會。」
那條狗就進去申請,但是被拒絕了。
「我不能雇一條狗在公司里做事。」經理說。
狗不服氣,指著告示上「均等機會」幾字抗議。
經理沒法,嘆了口氣,不屑地問道:「你會編程嗎?」
那條狗默默地走到電腦前,編了個程序,運作準確。
「你有團隊精神嗎?」經理問。
那條狗掉頭看了看門外,一大群野狗在外面虎視耽耽。
「我真的不能雇狗做這份工作。」經理氣急敗壞地說。
「就算會編程、有團隊精神,但是我需要的雇員至少要能精通兩種語言。」
那條狗抬頭看著經理說:「喵-噢。」
--------------------------------- 原創文章 By
菜單和工具欄
---------------------------------
轉載于:https://www.cnblogs.com/jiangu66/p/3153273.html
總結
以上是生活随笔為你收集整理的菜单工具栏wxPython菜单与工具栏基础示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 空间两点间距离计算
- 下一篇: 【Android LibGDX游戏引擎开