wxFormBuilder是一款界面編輯設(shè)計(jì)工具,用于生成跨平臺(tái)編譯代碼,能夠快速搭建GUI開發(fā)環(huán)境,wxFormBuilder支持快速生成C++,python, Lua 等代碼和 XRC 資源文件,搭建高效的帶有GUI界面編輯器的開發(fā)環(huán)境。
使用方法:
1、準(zhǔn)備一個(gè)窗體。
點(diǎn)擊wxformbuilder上方的標(biāo)簽“forms”,并點(diǎn)擊標(biāo)簽下方的第一個(gè)類似窗體的圖標(biāo)“Frame”
然后,下面就會(huì)出現(xiàn)一個(gè)窗體。但是現(xiàn)在還不能直接往窗體上添加各種控件。咱們還需要給窗體添加布局器BoxSizer。
2、添加布局器
點(diǎn)擊wxformbuilder上方的標(biāo)簽“Layout,并點(diǎn)擊標(biāo)簽下方的第一個(gè)圖標(biāo)“wxBoxSizer”。添加一個(gè)只有以列控件布局的布局器。這時(shí),窗體上并沒(méi)有什么變化。但是窗口左邊的目錄樹有變化了,窗體下多了一個(gè)布局器。
3、放置控件
保持目錄樹如上圖一樣,選中布局器bSizer1。這樣,添加進(jìn)窗體的控件都屬于并使用這個(gè)布局器的方法,單列布局。就是,所有添加上去的控件都是在一列上。
點(diǎn)擊wxformbuilder上方的標(biāo)簽“Common,順次并點(diǎn)擊標(biāo)簽下方的地三個(gè)圖標(biāo)“wxStaticText”,第四個(gè)圖標(biāo)“wxTextCtrl”,第一個(gè)圖標(biāo)“wxButton”。這樣,窗體設(shè)置上就會(huì)多出一個(gè)文字標(biāo)簽、一個(gè)文本框和按鈕。
4、修改控件屬性
點(diǎn)擊設(shè)計(jì)窗體上的控件,或者左邊樹形結(jié)構(gòu)的控件名。在wxformbuilder右邊的編輯欄都會(huì)自動(dòng)變成對(duì)應(yīng)控件的屬性編輯。在此,你可以修改該控件的和窗體的各類屬性。
此處,我們將會(huì)修改主窗體的name,文本編輯框的name,文字標(biāo)簽的label,和按鍵的label。
4.1 修改主窗體的name
主窗體的name和控件的name決定了你之后要使用的python代碼時(shí),使用的實(shí)體對(duì)象的變量名。點(diǎn)擊樹形結(jié)構(gòu)的MyFrame1,并在右邊屬性編輯欄修改窗體的name值為“BaseMainWind。如下圖:
此時(shí),左邊樹形中對(duì)應(yīng)的主窗體也會(huì)跟著改變名字,如下圖:
4.2修改控件的屬性
依照同樣的方法,在右邊的編輯框修改對(duì)應(yīng)控件的屬性。
文本編輯框wxTextCtrl的name屬性修改為“text_main”,文字標(biāo)簽wxStaticText的label屬性修改為“主窗口測(cè)試”,和按鍵wxButton的label屬性修改為“清空”,按鍵wxButton的name屬性修改為“button_main”。
剩下name屬性的我偷個(gè)懶,都懶得改了。直接使用默認(rèn)的好了。
修改完只有應(yīng)該如下圖所示:
5、 添加控件的觸發(fā)事情函數(shù)
當(dāng)按鈕被按下時(shí),咱們應(yīng)該觸發(fā)一個(gè)函數(shù),將文本框里的內(nèi)容清空。所以,應(yīng)該給按鈕控件添加一個(gè)觸發(fā)按下之后應(yīng)該使用的處理函數(shù)。
點(diǎn)擊選中按鈕控件button_main,在右邊的屬性編輯框,點(diǎn)擊上面的另外一個(gè)標(biāo)簽“Events”。添加一個(gè)給“OnButtonClick”的處理函數(shù)名:main_button_click。如下圖:
6、測(cè)試窗體內(nèi)容。
窗體設(shè)計(jì)基本完事了,咱們現(xiàn)在稍微測(cè)試一個(gè)窗體的樣子。按下F5,彈出對(duì)話框后點(diǎn)擊確定。這樣就wxformbuilder簡(jiǎn)單將咱們?cè)O(shè)計(jì)的窗體編譯C++的顯示方法,顯示出窗體的樣子。如下圖:
由于咱們沒(méi)有制定主窗口的大小,也沒(méi)有拖動(dòng)窗口。所以直接套用默認(rèn)值就是這樣的以適合控件布局為大小的窗口。但是,不妨礙咱們做測(cè)試。
7、保存給python用的代碼。
點(diǎn)擊選中左邊樹形圖的最上面的圖標(biāo),即選中工程。
再點(diǎn)擊最下面標(biāo)簽的python,即可出現(xiàn)在wxPython的代碼了。如下圖:
此時(shí),全選上面的代碼。右鍵,【Copy】。
新建一個(gè)py源文件,并將全部代碼粘貼進(jìn)去,保存名為basewin.py的python代碼源文件。
至此,wxPython代碼就已經(jīng)生成完畢了,請(qǐng)不要輕易變動(dòng)文件里的代碼。下面就是咱們調(diào)用窗體的主要邏輯代碼了。
8、編輯邏輯代碼
將邏輯代碼保存為main_win.py
#!/usr/bin/envpython#-*-coding:utf-8-*-importwximportbasewin#首先,咱們從剛剛源文件中將主窗體繼承下來(lái).就是修改過(guò)name屬性的主窗體咯。classMianWindow(basewin.baseMainWindow):
#咱們給個(gè)初始化函數(shù),將文本框初始填有‘主窗口測(cè)試’幾個(gè)字
#不能直接覆蓋原有__ini__方法,這樣會(huì)導(dǎo)致窗體啟動(dòng)失敗。咱們新建一個(gè),然后再調(diào)用
definit_main_window(self):
self.text_main.SetValue('主窗口測(cè)試')
#將點(diǎn)擊按鈕清空文本框的,功能寫成函數(shù)
defmain_button_click(self,event):
self.text_main.Clear()if__name__=='__main__':
app=wx.App()
#None表示的是此窗口沒(méi)有上級(jí)父窗體。如果有,就直接在父窗體代碼調(diào)用的時(shí)候填入‘self’就好了。
main_win=MianWindow(None)
main_win.init_main_window()
main_win.Show()
app.MainLoop()
將上面的邏輯代碼保存為main_win.py,并跟剛剛生成那個(gè)basewin.py,放在同一個(gè)目錄里。再給main_win.py可執(zhí)行的權(quán)限。
chmod+xmain_win.py
./main_win.py
然后就能運(yùn)行界面了,試一試點(diǎn)擊哪個(gè)【清空】按鈕。是不是輸入框里的文字消失了。