1. 下拉列表
下拉列表是由一個(gè)文本框和一個(gè)列表組成的,它有兩種方法可以使用,一種是wx.ComboBox,一種是wx.Choice,前者的文本框是可變的,而后者的是固定的。
我們直接通過例子來看一下:
import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "下拉列表", size=(300, 300)) self.Centre() panel = wx.Panel(self)#創(chuàng)建一個(gè)容器 box_one = wx.BoxSizer(wx.HORIZONTAL) text_one = wx.StaticText(panel,label='你喜歡的運(yùn)動(dòng)為:') sports = ['籃球','足球','排球'] select_one = wx.ComboBox(panel,-1,value = '足球',choices = sports,style = wx.CB_SORT) box_one.Add(text_one,1,flag=wx.LEFT|wx.RIGHT|wx.FIXED_MINSIZE,border = 7) box_one.Add(select_one,1,flag = wx.ALL|wx.FIXED_MINSIZE) box_two = wx.BoxSizer(wx.HORIZONTAL) text_two = wx.StaticText(panel,label='你喜歡的手機(jī)品牌為:') phones = ['小米','華為','蘋果'] select_two = wx.Choice(panel,-1,choices = phones,style = wx.CB_SORT) box_two.Add(text_two,1,flag=wx.LEFT|wx.RIGHT|wx.FIXED_MINSIZE,border = 7) box_two.Add(select_two,1,flag = wx.ALL|wx.FIXED_MINSIZE) bbox = wx.BoxSizer(wx.VERTICAL) bbox.Add(box_one,1,flag = wx.ALL|wx.EXPAND,border = 7) bbox.Add(box_two, 1, flag=wx.ALL | wx.EXPAND, border=7) panel.SetSizer(bbox) if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
運(yùn)行結(jié)果如下圖:
我們可以看出兩種列表的不同之處,選擇使用wx.Choice的時(shí)候,選擇框中的內(nèi)容是固定的,只有從列表中選擇,而使用wx.ComboBox的時(shí)候選擇框中的內(nèi)容不是固定的,關(guān)鍵語句:
select_one = wx.ComboBox(panel, -1, value='足球', choices=sports, style=wx.CB_SORT) select_two = wx.Choice(panel, -1, choices=phones, style=wx.CB_SORT)
2. 菜單
我們可以發(fā)現(xiàn)在日常生活中使用的大多圖形用戶界面都是有菜單項(xiàng)的,如下面的幾張圖:
點(diǎn)擊其中一個(gè)菜單項(xiàng)還有多個(gè)選項(xiàng)供我們選擇,下面我們來學(xué)習(xí)使用wxPython中的功能來實(shí)現(xiàn)菜單欄。
1) 創(chuàng)建一個(gè)菜單欄:menuBar = wx.MenuBar()。
2) 創(chuàng)建菜單: fileMenu = wx.Menu()
3) 創(chuàng)建菜單項(xiàng): newItem = wx.MenuItem()
4) 添加菜單項(xiàng)到菜單中: fileMenu.AppendItem(newItem)
5) 添加菜單到菜單欄:menuBar.Append(fileMenu, title = "File")
6) 把菜單欄設(shè)置為界面的菜單欄:self.SetMenuBar(menuBar)
7) 綁定菜單事件:self.Bind(wx.EVT_MENT, self.menuHandler)
代碼如下:
import wx class MyFrame(wx.Frame): def __init__(self): super().__init__(parent=None, title="wxPython", size=(400, 300)) self.Center() self.text = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE) vbox = wx.BoxSizer(wx.VERTICAL) self.SetSizer(vbox) vbox.Add(self.text, 1, flag=wx.EXPAND | wx.ALL, border=1) menubar = wx.MenuBar()#對(duì)應(yīng)步驟1 self.SetMenuBar(menubar) file_menu = wx.Menu()#對(duì)應(yīng)步驟2 menubar.Append(file_menu, '菜單')#對(duì)應(yīng)步驟4 file_menu.Append(id=wx.ID_NEW, item='新建', helpString='new file') file_menu.AppendSeparator() edit_menu = wx.Menu() file_menu.AppendSubMenu(edit_menu, "編輯") copy_item = wx.MenuItem(edit_menu, 100, text="復(fù)制", kind=wx.ITEM_NORMAL)#對(duì)應(yīng)步驟3 edit_menu.Append(copy_item) cut_item = wx.MenuItem(edit_menu, 101, text="剪切", kind=wx.ITEM_NORMAL) edit_menu.Append(cut_item) paste_item = wx.MenuItem(edit_menu, 102, text="粘貼", kind=wx.ITEM_NORMAL) edit_menu.Append(paste_item) if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
運(yùn)行結(jié)果如下:
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程