初識GUI
- GUI是Graphical User Interface(圖形用戶介面的縮寫)
- 程序有3個,輸入、處理、輸出
常用框架
wxpython,PyQt、Tkinter等
安裝wxpython
1 | pip install -U wxpython |
安裝成功
建立應用程式
使用wxpython之前,先了解程序對象及頂級窗口
主循環事件是wxpython程式的動力,如果沒有對象,將不能運行
是用於管理最重要的數據,控制並呈現給客戶
建立一個wx.App的子類
這是一個沒有任何功能的子類
- 定義這個子類
- 在定義的程式裡寫一個OnInit的初始化函數
- 在程式的主要部份建立這個類的一個實例
- 調用應用程式的MainLoop()函數,將這個程式的控制權轉交給wxpython
範例
1 | import wx |
結果
直接使用wx.App
如果只有一個窗口,就直接使用吧~~
1 | import wx |
使用wx.Frame框架
在wxpython中,wxFrame是所有框架的父類,當用戶創建wx.Frame子類時,子類應該調用其父類的構造器wx.Frame.init()。
語法如下
1 | wx.Frame(parent, id = -1, title = "", |
範例
1 | import wx |
結果
StaticText文本類
對於所有UI工具來說,最基本的任務就是在螢幕上印出純文本,語法如下
1 | wx.StaticText(parent, id, label, |
範例
1 | import wx |
結果
上述程式碼中,使用panel = wx.Panel(self)來建立面板,並將Panel當作父類,然後將組件放入窗體……
1 | wx.Font(PointSize, family, style, weight, underline = False, faceName = "", encoding = wx.FONTENCODING_DEFAULT) |
輸入文字
需要的是wx.TextCtrl類
1 | wx.TextCtrl(parent, id, value = "", pos, size, style = 0, validator = wx.DefaultValidator, name = wx.) |
範例
1 | import wx |
結果
Button,做按鈕
語法如下
1 | wx.Button(parent, id, label, pos, size, style = 0, validator, name = "button") |
範例
1 | self.bt_confirm = wx.Button(panel, label = "確定", pos = (105, 130)) |
結果
BoxSizer布局
wxpython提供了5種sizer => (BoxSizer, GridSizer, FlexGridSizer, GridBagSizer, StaticBoxSizer
)
範例
1 | class MyFrame(wx.Frame): |
結果
將前面的融合之後…
1 | import wx |
結果
事件處理
事件就是單純的event,比如點擊一個按鈕,就會觸發……
使用監控Bind()函數,語法如下 :point_down:
1 | bt_confirm.Bind(wx.EVT_BUTTOM, OnclickSubmit) |
範例
1 | ## 上面的__init__()裡面 |
結果