###### tags: `python` # wxFormBuilder ## 安裝 1. 連到 https://github.com/wxFormBuilder/wxFormBuilder/releases 2. 下載 [**wxFormBuilder_v3.6.2.exe**](https://github.com/wxFormBuilder/wxFormBuilder/releases/download/v3.6.2/wxFormBuilder_v3.6.2.exe) 3. 安裝(使用預設值即可) ## 產生傳統功能列視窗 1. 建立專案資料夾(例如: hello) 2. 執行 wxFormBuilder 3. 點左邊的「Object Tree」的「Project」 4. 點右邊的「Object Properties」 * name: 軟體名稱(例如: hello) * path: python檔儲存路徑 * file: python檔名(例如: hello) * code_generation: 產生指定的程式語言 5. 點上方的「Component Palette/Frame」 6. 點右邊的「Object Properties」 * name: 程式操作該物件的name(例如: FrameMain) * title: 視窗的顯示名稱(例如: hello) * wxWindow/pos/X: 視窗一開始位於x軸 * wxWindow/pos/Y: 視窗一開始位於y軸 * wxWindow/size/Width: 視窗的寬度 * wxWindow/size/Height: 視窗的高度 * wxWindow/minimum_size/Width: 視窗最小寬度 * wxWindow/minimum_size/Height: 視窗最小高度 * wxWindow/maximum_size/Width: 視窗最大寬度 * wxWindow/maximum_size/Height: 視窗最大高度 * wxWindow/fg: 前景顏色 * wxWindow/bg: 背景顏色 * wxWindow/window_style/wxHSCROLL: 垂直軸拖拉吧 * wxWindow/window_style/wxVSCROLL: 水平軸拖拉吧 * wxWindow/hidden: 隱藏 7. 按 Ctrl + S 儲存設計檔(test/view/main.fbp) 8. 產生python的wxPython視窗程式(test/view) 9. 打開VScode 10. 按 Ctrl + N 開啟新分頁 11. 輸入以下程式碼 ```python= import wx import hello if __name__ == '__main__': app = wx.App() MainApp = hello.FrameMain(None) # 沒有父視窗,所以用None MainApp.SetIcon(wx.Icon('images/camera.ico', wx.BITMAP\_TYPE\_ICO)) # 視窗左上角小圖示 MainApp.Show() app.MainLoop() ``` 13. 儲存為 main.py 14. 執行 main.py ---- ## 產生Ribbon功能列視窗 ![](https://i.imgur.com/P2QfWmS.png) 1. 同上設定專案名稱、檔案產生目錄、檔名、 2. 點「forms/Frame」 設定該Frame的name, title 3. 點「layout/wxBoxSizer」 4. 點「Ribbon/RibbonBar」 5. 點「Ribbon/RibbonPage」產生分頁 設定該RibbonPage的name, title 6. 可依功能需求使用以下3種不同模式 ### A. 增加RibbonButtonBar(會有大有小圖示) ![](https://i.imgur.com/NfpedMe.png) 1. 點「Ribbon/RibbonPanel」產生面板(功能群組) 設定該RibbonPanel的name, title 2. 點「Ribbon/wxRibbonButtonBar」 3. 點「Ribbon/ribbonButton」 設定riboonButton的name, lable, file_path(圖片檔案位置) ### B. 增加RibbonToolBar(所有圖示統一大小) ![](https://i.imgur.com/18yLnFE.png) 1. 點「Ribbon/RibbonPanel」產生面板(功能群組) 設定該RibbonPanel的name, title 2. 點「Ribbon/wxRibbonToolBar」 3. 點「Ribbon/ribbonTool」 設定RibbonTool的name, lable, file_path(圖片檔案位置) ### C. 增加RibbonGallery(可往下移動顯示更多圖示) ![](https://i.imgur.com/rCaUoOZ.png) 1. 點「Ribbon/RibbonPanel」產生面板(功能群組) 設定該RibbonPanel的name, title 2. 點「Ribbon/wxRibbonGallery」 3. 點「Ribbon/ribbonGalleryItem」 設定RibbonGalleryItem的name, file_path(圖片檔案位置) 後續步驟同傳統功能視窗 7~14 --- ### 練習:簡易小算盤 1. 產生答案區 2. 產生0~9, 加、減、乘、除、等於、清除按鈕 ----- ## 開啟、關閉其他視窗 1. 參考之前練習產生第一個frame 2. 在視窗中新增第一個按鈕: a. name: btn_products, label: 商品管理 b. OnButtonClick: fun_products # 使用者點該按鈕時呼叫哪個函數 3. 在視窗中新增第二個按鈕: a. name: btn_customers, label: 客戶管理 b. OnButtonClick: fun_customers 4. 點「Forms/Frame」新增第二個frame: name: FrameCustomers 5. 點「Layout/wxBoxSizer」 6. 點「Common/wxBotton」 name: btn_close label: 關閉 OnButtonClick: fun_close_customers 7. 點「Forms/Frame」新增第三個frame: name: FrameProducts 8. 點「Layout/wxBoxSizer」 9. 點「Common/wxBotton」 name: btn_close label: 關閉 OnButtonClick: fun_close_products 10. 存檔、產生python語法檔 11. 打開剛剛儲存的語法檔 12. 找到**def fun_open_products( self, event ):** 在底下輸入: **frameCustomers = FrameCustomers(None) frameCustomers.Show()** 點該按鈕時打開客戶管理視窗 13. 找到**def fun_open_customers( self, event ):** 在底下輸入: **frameProducts = FrameProducts(None) frameProducts.Show()** 點該按鈕時打開產品管理視窗 14. 找到**def fun_close_customers( self, event ):** 在底下輸入: **self.Destroy()** 點該按鈕時關閉此一視窗 15. 找到**def fun_close_products( self, event ):** 在底下輸入: **self.Destroy()** 16. 存檔 17. 執行專案第一個執行檔(ex: index.py) 如果正確的話,點「商品管理」打開商品管理視窗 點「關閉」關閉商品管理視窗 客戶管理功能同上 ---- ## 參考資料 [Free icons set icons pack Free icon 3.02MB](http://all-free-download.com/free-icon/download/free-icons-set-icons-pack_120754.html) [微軟圖示集](https://www.microsoft.com/en-us/download/details.aspx?id=35825) [Icons8 Windows 10 Icons](https://github.com/icons8/windows-10-icons) [wxPython in Action](http://oez.es/wxPython%20in%20Action.pdf)