tags: python

wxFormBuilder

安裝

  1. 連到 https://github.com/wxFormBuilder/wxFormBuilder/releases
  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. 輸入以下程式碼
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()
  1. 儲存為 main.py
  2. 執行 main.py

產生Ribbon功能列視窗

  1. 同上設定專案名稱、檔案產生目錄、檔名、
  2. 點「forms/Frame」
    設定該Frame的name, title
  3. 點「layout/wxBoxSizer」
  4. 點「Ribbon/RibbonBar」
  5. 點「Ribbon/RibbonPage」產生分頁
    設定該RibbonPage的name, title
  6. 可依功能需求使用以下3種不同模式

A. 增加RibbonButtonBar(會有大有小圖示)

  1. 點「Ribbon/RibbonPanel」產生面板(功能群組)
    設定該RibbonPanel的name, title
  2. 點「Ribbon/wxRibbonButtonBar」
  3. 點「Ribbon/ribbonButton」
    設定riboonButton的name, lable, file_path(圖片檔案位置)

B. 增加RibbonToolBar(所有圖示統一大小)

  1. 點「Ribbon/RibbonPanel」產生面板(功能群組)
    設定該RibbonPanel的name, title
  2. 點「Ribbon/wxRibbonToolBar」
  3. 點「Ribbon/ribbonTool」
    設定RibbonTool的name, lable, file_path(圖片檔案位置)

C. 增加RibbonGallery(可往下移動顯示更多圖示)

  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
微軟圖示集
Icons8 Windows 10 Icons
wxPython in Action