快速開發(fā)小軟件時,使用wxFormBuilder來設(shè)計好界面,生成XRC文件,當然不想給別人看到xrc文件的內(nèi)容也可以用工具編譯為二進制文件,參考wx.chm文檔吧。之后程序載入界面再綁定行為很優(yōu)雅和高效。wxFormBuilder設(shè)計好之后按f5直接看運行效果很贊。
wxWidgets界面開發(fā)工具wxFormBuilder怎么用?
安裝完成后,打開wxFormBuilder,可以在左側(cè)工程子窗口里看到已經(jīng)有一個默認的MyProject1了,我們在里面添加一個Dialog,一個wxStaticText和一個wxButton。
步驟如下:
1.添加一對話框。
2.填入對話框的控制和sizers 。 wxFormBuilder只支持 基礎(chǔ)布局的Sizer ,所以不得不增加一個 Sizer讓 能夠插入控制。
轉(zhuǎn)到組件面板,并點擊 Layout (布局)標簽。 然后, 點擊第一個圖標 創(chuàng)建一個方塊Sizer。
3.添加一些控制到Sizer,例如,一個wxStaticText和一個wxButton。
完成wxFormBuilder的布局設(shè)計后,通過下方選項卡將窗口切換到C++代碼模式,可以看到C++代碼包括一個.h頭文件一個.cpp源文件。
接著,新建一空win32工程,注意是非控制臺的。再新建空.h和.cpp文件后,配置工程(配置方法: http://www.cnblogs.com/lxt287994374/p/3590066.html )。
把wxFormBuilder中的代碼都拷貝到剛剛建立的VS工程里,這里要注意VS工程里的.h和.cpp文件名。
此時,我們還不能正常運行程序,因為我們通過wxFormBuilder建立的都只是單個窗體,是沒有程序入口點的。我們要讓程序運行起來,需要實現(xiàn)wxApp里面的方法,我們在剛剛拷貝生成的.h頭文件的include塊下加入如下代碼:
#include<wx/wx.h>
class MyApp: public wxApp
{
public:
virtual bool OnInit();
};
然后在.cpp源文件的include塊下里加入如下代碼:
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
if(!wxApp::OnInit())
return false;
MyDialog1 *dlg=new MyDialog1(NULL);
dlg->Show();
return true;
}
完成之后運行程序,就能得到能過wxFormBuilder設(shè)計好的實際運行結(jié)果了:
wxFormBuilder詳細使用教程:
1、打開wxFormBuilder,按開始一個空項目。您也可以執(zhí)行File|New來創(chuàng)建新項目
2、從Object Properties(對象屬性)面板配置項目的設(shè)置
A、選擇產(chǎn)生什么類型的代碼。 現(xiàn)在你可以生成C++和/或XRC代碼。
B、設(shè)置生成文件的文件名(只有名稱,沒有擴展名)。
C、為您的項目輸入一個名稱。
D、設(shè)置代碼生成的路徑。相對路徑“.” 將導致代碼生成和項目文件相同的目錄中。
E、如果你想所有的文件引用您的項目(例如圖像)產(chǎn)生一個相對路徑,請選中relative_path 選項 。
F、保存項目。
3、轉(zhuǎn)到組件面板,然后按一下Forms標簽。 然后,創(chuàng)建一個對話框,按一下第三個圖標
現(xiàn)在在對話框中顯示的對象樹。
4、現(xiàn)在您可以在對話框中的Object Properties(對象屬性)面板配置屬性。 例如,改變對話框名稱為TutorialDialogGui 。 這個名字也將要產(chǎn)生的C++類的名稱
5、在此之后,您準備填入您的對話框的控制和sizers 。 wxFormBuilder只支持基礎(chǔ)布局的Sizer,所以你將不得不增加一個Sizer能夠插入控制。 轉(zhuǎn)到組件面板,并點擊Layout(布局)標簽。 然后,點擊第一個圖標創(chuàng)建一個方塊Sizer
6、添加一些控制到Sizer,例如,兩個按鈕。去Common(通用)標簽,并按下第一個圖標()兩次。
7、在Object Properties(對象屬性)面板的label property 中更改圖標的標簽。 例如,將第一個按鈕的標簽的屬性設(shè)為&Show a message,第二個為&Close。同樣,分別設(shè)置第一個和第二個按鈕的id 屬性為ID_SHOWMESSAGE和wxID_OK
第一個按鈕的屬性設(shè)置。
8、現(xiàn)在,現(xiàn)在是時候增加事件處理程序的按鈕。在Object Properties(對象屬性)面板中切換到Events標簽。 設(shè)定第一個按鈕的OnButtonClick的值為OnShowMessage,第二個按鈕的值設(shè)置為OnClose
第一個按鈕的Events
9、現(xiàn)在,你可以生成代碼了!按F8 或 。 如果一切正確的話,在狀態(tài)欄中你會看到一條消息表示代碼已成功產(chǎn)生。 您可以在C++標簽中查看輸出的代碼
10、現(xiàn)在是把生成的代碼集成到您的IDE(Visual C++, Dev-C++, Code::Blocks...)中的時候了。加所產(chǎn)生的文件(tutorial_gui.h/CPP)到你的Project(項目)中
11、每次從wxFormBuilder生成的代碼時,你的文件將被最后一次產(chǎn)生的代碼所覆蓋,所以你不能直接增加你的事件處理程序到該文件中。因此,從Tools | Generate Inherited Class(或F6)啟動Generate Inherited Class(生成繼承類向?qū)В┑霓k法在 wxFormBuilder中生成子類
繼承類生成對話框
12、選擇Form的名稱TutorialDialogGui ,你可以修改所產(chǎn)生的類的名稱
選定Form的名稱
13、修改類的名稱為TutorialDialog,文件名為tutorial,請確保選中該框,然后單擊“OK”(確定)
名稱變了,F(xiàn)orm也選中了。
wxformbuilder在python如何使用
1、使用builder 創(chuàng)建界面并進行布局
2、選擇python選項 得到相應代碼
將代碼保存在 一個py文件里面
創(chuàng)建一個新的入口文件
main.py
import wximport UIfile class YPiao(UIfile.classname): #這里開始繼承后對Virtual event handlers進行override,這個示例是對關(guān)于我們的菜單選擇后進行了重載。 def m_abooutOnMenuSelection( self, event ): wx.MessageBox("這是一款免費軟件","關(guān)于軟件",wx.YES_NO|wx.ICON_QUESTION) # init the programeapp = wx.App() #實例化APP,因為wxformbuilder只提供界面布局,所以需要我們自己對代碼進行構(gòu)架frame = YPiao(None) #frame的實例frame.Show();