wxPython是一套基於Python的GUI,可用Python製作圖形化界面程式。 本文內容為根據電子書“wxPython實戰(中文版)高清.pdf”整理,若有錯,歡迎指正。 註:雖然控制項可以使用pos參數指定位置,但推薦使用Sizer佈局控制項對應用程式整體進行佈局,佈局控制項的詳細方法可以參考電子 ...
wxPython是一套基於Python的GUI,可用Python製作圖形化界面程式。
本文內容為根據電子書“wxPython實戰(中文版)高清.pdf”整理,若有錯,歡迎指正。
註:雖然控制項可以使用pos參數指定位置,但推薦使用Sizer佈局控制項對應用程式整體進行佈局,佈局控制項的詳細方法可以參考電子書“wxPython實戰(中文版)高清.pdf”或網上自行下載相關書籍。
1. wx.StaticText:顯示靜態文本控制項
構造函數:wx.StaticText(parent, id, label, pos=wx.DefaultPosition,size=wx.DefaultSize, style=0, name=”staticText”)
例子: center_text = wx.StaticText(panel, -1, ”align center”, (100, 50), (160, -1), wx.ALIGN_CENTER) # 居中對齊的文本(label中可以使用“\n”等控制文本顯示的轉義字元。)
參數說明:
parent:父視窗部件
id:標識符,使用-1可以自動創建一個唯一的標識
label:你想顯示在靜態控制項中的文本
pos:一個wx.Point或一個Python元組,它是視窗部件的位置
size:一個wx.Size或一個Python元組,它是視窗部件的尺寸
style:樣式標記
name:對象的名字,用於查找的需要
樣式:
wx.ALIGN_CENTER:靜態文本位於靜態文本控制項的中心
wx.ALIGN_LEFT:文本在視窗部件中左對齊,這是預設的樣式
wx.ALIGN_RIGHT:文本在視窗部件中右對齊
wx.ST_NO_AUTORESIZE:如果使用了這個樣式,那麼在使用了SetLabel()改變文本之後,靜態文本控制項不將自我調整尺寸
2. TextCtrl:單行或多行文本輸入控制項(預設單行,多行可以使用樣式wx.TE_MULTILINE/wx.TE_RICH2/wx.TE_RICH)
構造函數:wx.TextCtrl(parent, id, value = ””, pos=wx.DefaultPosition,size=wx.DefaultSize, style=0, validator=wx.DefaultValidator, name=wx.TextCtrlNameStr)
例子:input_text = wx.TextCtrl(panel, -1, ”I’ve entered some text!”, size=(175, -1))
單行文本樣式:
wx.TE_CENTER:控制項中的文本居中
wx.TE_LEFT:控制項中的文本左對齊,預設行為
wx.TE_NOHIDESEL:文本始終高亮顯示,只適用於Windows
wx.TE_PASSWORD:不顯示所鍵入的文本,代替以星號顯示
wx.TE_PROCESS_ENTER:如果使用了這個樣式,那麼當用戶在控制項內按下回車鍵時,一個文本輸入事件被觸發。否則,按鍵事件內在的由該文本控制項或該對話框管理
wx.TE_PROCESS_TAB:如果指定了這個樣式,那麼通常的字元事件在Tab鍵按下時創建(一般意味一個製表符將被插入文本)。否則,tab由對話框來管理,通常是控制項間的切換
wx.TE_READONLY:文本控制項為只讀,用戶不能修改其中的文本
wx.TE_RIGHT:控制項中的文本右對齊
多行或豐富文本樣式:
wx.HSCROLL:如果文本控制項是多行的,並且如果該樣式被聲明瞭,那麼長的行將不會自動換行,並顯示水平滾動條。該選項在GTK+中被忽略
wx.TE_AUTO_URL:如果豐富文本選項被設置並且平臺支持的話,那麼當用戶的滑鼠位於文本中的一個URL上或在該URL上敲擊時,這個樣式將導致一個事件被生成
wx.TE_DONTWRAP:wx.HSCROLL的別名
wx.TE_LINEWRAP:對於太長的行,以字元為界換行。某些操作系統可能會忽略該樣式
wx.TE_MULTILINE:文本控制項將顯示多行
wx.TE_RICH:用於Windows下,豐富文本控制項用作基本的視窗部件。這允許樣式文本的使用
wx.TE_RICH2:用於Windows下,把最新版本的豐富文本控制項用作基本的視窗部件
wx.TE_WORDWRAP:對於太長的行,以單詞為界換行。許多操作系統會忽略該樣式
通用文本處理方法:
AppendText(text):在尾部添加文本
Clear():重置控制項中的文本為“”,並且生成一個文本更新事件
EmulateKeyPress(event):產生一個按鍵事件,插入與事件相關聯的控制符,就如同實際的按鍵發生了
GetInsertionPoint()/SetInsertionPoint(pos)/SetInsertionPointEnd():得到或設置插入點的位置,位置是整型的索引值。控制項的開始位置是0
GetRange(from, to):返回控制項中位置索引範圍內的字元串。
GetSelection():以元組的形式返回當前所選擇的文本的起始位置的索引值(開始,結束)
GetStringSelection():得到所選擇的字元串
SetSelection(from, to):設置選擇的文本
GetValue():返回控制項中所有的字元串
SetValue(value):改變控制項中的全部文本
Remove(from, to):刪除指定範圍的文本
Replace(from, to, value):用給定的值替換掉指定範圍內的文本(這可以改變文本的長度)
WriteText(text):類似於AppendText(),只是寫入的文本被放置在當前的插入點
多行文本處理方法:
GetDefaultStyle()/SetDefaultStyle(style):設置文本的字體和顏色等顯示樣式
GetLineLength(lineNo):返回指定行的長度的整數值
GetLineText(lineNo):返回指定行的文本
GetNumberOfLines():返回控制項中的行的數量。對於單行,返回1
IsMultiLine()/IsSingleLine():布爾類型的方法,確定控制項的狀態
PositionToXY(pos):指定文本內的一個整數值位置,返回以元組(列,行)形式的索引位置。列和行的索引值均以0作為開始
SetStyle(start, end,style):立即改變指定範圍內文本的樣式
ShowPosition(pos):引起一個多行控制項的滾動,以便觀察到指定位置的內容
XYToPosition(x, y):與PositionToXY(pos)相反——指定行和列,返回整數值位置
3. wx.Button:按鈕控制項(控制項被敲擊時產生一個EVT_BUTTON類型的命令事件)
構造函數:wx.Button(parent, id, label, pos, size=wxDefaultSize, style=0, validator, name=”button”)
例子:button = wx.Button(panel, -1, ”Hello”, pos=(50, 20))
4. wx.CheckBox:覆選框控制項(產生一個屬於它自己EVT_CHECKBOX的命令事件)
構造函數:wx.CheckBox(parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0, name=”checkBox”)
例子:wx.CheckBox(panel, -1, ”Alpha”, (35, 40), (150, 20))
處理方法:GetValue()/SetValue(state)/IsChecked():獲取和設置控制項的開關狀態(值或參數都是布爾值)
5. RadioButton:單選按鈕控制項(產生一個EVT_RADIOBUTTON事件)
構造函數:wx.RadioButton(parent, id, label, pos=wx.DefaultPosition size=wx.DefaultSize, style=0, validator=wx.DefaultValidator, name=”radioButton”)
例子:radio = wx.RadioButton(panel, -1, ”Elmo”, pos=(20, 50), style=wx.RB_GROUP)
樣式:wx.RB_GROUP樣式聲明該按鈕位於一組單選按鈕開頭(處於選中狀態)。當組中的一個按鈕被選中時,先前被選中的按鈕被切換到未選中狀態。在一個單選按鈕使用wx.RB_GROUP被創建後,所有後來的被添加到相同父視窗部件中的單選按鈕都被添加到同一組,直到另一單選按鈕使用wx.RB_GROUP被創建,並開始下一個組
6. wx.RadioBox:單選框控制項(一個框中包含一組單選按鈕,產生一個EVT_RADIOBOX事件)
構造函數:wx.RadioBox(parent, id, label, pos=wx.DefaultPosition, size=wxDefaultSize, choices=None, majorDimension=0, style=wx.RA_SPECIFY_COLS, validator=wx.DefaultValidator, name=”radioBox”)
例子:
sampleList = [‘zero’, ’one’, ’two’, ’three’, ’four’, ’five’, ’six’, ’seven’, ’eight’] # 單選按鈕的label
wx.RadioBox(panel, -1, ”A Radio Box”, (10, 10), wx.DefaultSize, sampleList, 2, wx.RA_SPECIFY_COLS) # 第三個參數是單選框的label,倒數第二個參數是指定每行顯示2個單選按鈕
樣式:wx.RA_SPECIFY_COLS/wx.RA_SPECIFY_ROWS:指定單選按鈕顯示的維度(可以根據這個樣式標記來指定顯示多少列或行)
處理方法:
EnableItem(n, flag):flag參數是一個布爾值,它用於使索引為n的按鈕有效或無效。要使整個框立即有效,使用Enable()
FindString(string):根據指定的標簽返回相關按鈕的整數索引值,如果標簽沒有發現則返回-1
GetCount():返回框中按鈕的數量
GetItemLabel(n)/SetItemLabel(n, string):返回或設置索引為n的按鈕的字元串標簽
GetSelection():返回當前所選擇的單選按鈕的整數索引
GetStringSelection():返回當前所選擇的按鈕的字元串標簽
SetSelection(n):設置當前所選擇的單選按鈕的整數索引
SetStringSelection(string):設置所選擇的按鈕的字元串標簽
ShowItem(item, show):show參數是一個布爾值,用於顯示或隱藏索引為item的按鈕
7. wx.ListBox:列表框控制項
構造函數:wx.ListBox(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name=”listBox”)
例子:
sampleList = [‘zero’, ’one’, ’two’, ’three’, ’four’, ’five’,’six’, ’seven’, ’eight’, ’nine’, ’ten’, ’eleven’,’twelve’, ’thirteen’, ’fourteen’]
listBox = wx.ListBox(panel, -1, (20, 20), (80, 120), sampleList, wx.LB_SINGLE)
樣式:
wx.LB_EXTENDED:用戶可以通過使用shift並敲擊滑鼠來選擇一定範圍內的連續的選項,或使用等同功能的按鍵
wx.LB_MULTIPLE:用戶可以一次選擇多個選項(選項可以是不連續的)。實際上,在這種情況下,列表框的行為就像是一組覆選框
wx.LB_SINGLE:用戶一次只能選一個選項。實際上,在這種情況下,列表框的行為就像是一組單選按鈕
wx.LB_SORT:它使得列表中的元素按字母順序排序
wx.LB_ALWAYS_SB:列表框將始終顯示一個垂直的滾動條,不管有沒有必要
wx.LB_HSCROLL:如果本地控支持,那麼列表框在選擇項太多時,將創建一個水平滾動條
wx.LB_HSCROLL:列表框只在需要的時候顯示一個垂直的滾動條。這是預設樣式
事件:EVT_LISTBOX事件在當列表中的一個元素被選擇時觸發(即使它是當前所選擇的元素)。如果列表被雙擊,EVT_LISTBOX_DCLICK事件發生
處理方法:
Append(item):把字元串項目添加到列表框的尾部
Clear():清空列表框
Delete(n):刪除列表框中索引為n的項目
Deselect(n):在多重選擇列表框中,導致位於位置n的選項取消選中。在其它樣式中不起作用
FindString(string):返回給定字元串的整數位置,如果沒有發現則返回-1
GetCount():返回列表中字元串的數量
GetSelection():得到當前選擇項的整數索引(單選列表)
GetStringSelection():返回當前選擇的字元串(單選列表)
GetSelections():返回包含所選項目的整數位置的元組(多選列表)
SetSelection(n, select):設置指定索引選項的狀態
SetStringSelection(string, select):設置指定字元串選項的狀態
GetString(n):得到位置n處的字元串
SetString(n, string):設置位置n處的字元串
InsertItems(items, pos):插入參數items中的字元串列表到該列表框中pos參數所指定的位置前。位置0表示把項目放在列表的開頭
Selected(n):返回對應於索引為n的項目的選擇狀態的布爾值
Set(choices):重新使用choices的內容設置列表框
8. wx.CheckListBox:覆選框和列表框的結合的控制項(傳進去的選擇項為覆選框列表)
構造函數和方法:其構造函數和大多數處理方法與列表框控制項的相同
新事件:它有一個新的事件:wx.EVT_CHECKLISTBOX,它在當列表中的一個覆選框被敲擊時觸發
新方法:它有兩個管理覆選框的新的方法:Check(n, check)設置索引為n的項目的選擇狀態,IsChecked(item)在給定的索引的項目是選中狀態時返回True
9. wx.Choice:下拉列表框控制項(它有自己的命令事件:EVT_CHOICE)
構造函數:wx.Choice(parent, id, pos=wx.DefaultPosition, size=wx.DefaultSize, choices=None, style=0, validator=wx.DefaultValidator, name=”choice”)
例子:wx.Choice(panel, -1, (85, 18), choices=[‘zero’, ’one’, ’two’, ’three’, ’four’, ’five’, ’six’, ’seven’, ’eight’])
方法:與列表框wx.ListBox設為單選樣式時的方法大多都適用於此控制項
10. wx.FileDialog:文件選擇對話框控制項
構造函數:wx.FileDialog(parent, message=”Choose a file”, defaultDir=””, defaultFile=””, wildcard=”*.*”, style=0, pos=wx.DefaultPosition)
例子:dialog = wx.FileDialog(None, ”Choose a file”, os.getcwd(), ””, wildcard, wx.OPEN) # os.getcwd()獲取當前工作目錄
樣式:
wx.OPEN:打開並選擇文件
wx.SAVE:用於保存文件
wx.HIDE_READONLY標記灰化覆選框,使用戶以只讀模式打開文件
wx.MULTIPLE標記使用戶可以在一個目錄中選擇打開多個文件
wx.OVERWRITE_PROMPT:保存文件時,如果有相同的文件存在,則提示用戶是否覆蓋
wx.CHANGE_DIR:可改變應用程式的工作目錄為所選文件所在的目錄,這使得下次文件對話框打開在相同的目錄,而不需要應用程式再在別處存儲該值
處理方法:
文件對話框的屬性directory,filename,style,message,和wildcard是可以通過方法來得到和設置的,這些方法使用Get/Set命名習慣
在用戶退出對話框後,如果返回值是wx.OK,那麼你可以使用方法GetPath()來得到用戶的選擇,該函數的返回值是字元串形式的文件全路徑名
如果對話框是一個使用了wx.MULTIPLE標記的打開對話框,則用GetPaths()代替GetPath(),該方法返迴路徑字元串的一個Python列表
11. wx.DirDialog:目錄或文件夾選擇對話框控制項
構造函數:wx.DirDialog(parent, message=”Choose a directory”, defaultPath=””, style=0, pos = wx.DefaultPosition, size = wx.DefaultSize, name=”wxDirCtrl”)
例子:dialog = wx.DirDialog(None, ”Choose a directory:”, style=wx.DD_DEFAULT_STYLE | wx.DD_NEW_DIR_BUTTON)
樣式:wx.DD_NEW_DIR_BUTTON給對話框一個用於創建目錄的一個按鈕
處理方式:path,message,和style屬性都有相應的get*和set*方法,你可以使用GetPath()方法來在對話框被調用後獲取用戶的選擇
12. wx.MessageDialog:消息對話框控制項(使用ShowModal()來顯示對話框並返回交互結果)
構造函數:wx.MessageDialog(parent, message, caption=”Message box”, style=wx.OK | wx.CANCEL, pos=wx.DefaultPosition)
例子:dlg = wx.MessageDialog(None, ”Is this explanation OK?”, ’A Message Box’, wx.YES_NO | wx.ICON_QUESTION)
樣式:
wx.CANCEL:包括一個cancel(取消)按鈕。這個按鈕有一個ID值wx.ID_CANCEL
wx.NO_DEFAULT:在一個wx.YES_NO對話框中,No(否)按鈕是預設的
wx.OK:包括一個OK按鈕,這個按鈕有一個ID值wx.ID_OK
wx.YES_DEFAULT:在一個wx.YES_NO對話框中,Yes按鈕是預設的。這是預設行為
wx.YES_NO:包括Yes和No按鈕,各自的ID值分別是wx.ID_YES和wx.ID_NO
wx.ICON_ERROR:表示一個錯誤的圖標
wx.ICON_EXCLAMATION:表示警告的圖標
wx.ICON_HAND:同wx.ICON_ERROR
wx.ICON_INFORMATION:信息圖標,字母i
wx.ICON_QUESTION:問號圖標
便利函數:wx.MessageBox,例子:wx.MessageBox(message, caption=”Message”, style=wx.OK),用法及樣式與類 wx.MessageDialog差不多
13. wx.TextEntryDialog:簡單輸入對話框控制項(使用ShowModal()顯示對話框並返回交互結果)
構造函數:wx.TextEntryDialog(parent, message, caption=”Please enter text”, defaultValue=””, style=wx.OK | wx.CANCEL | wx.CENTRE, pos=wx.DefaultPosition)(message參數是顯示在對話框中的文本提示,而caption顯示在標題欄中。defaultValue顯示在文本框中的預設值。style可以包括wx.OK和wx.CANCEL,它顯示適當的按鈕)
例子:dialog = wx.TextEntryDialog(None, ”What kind of text would you like to enter?”, ”Text Entry”, ”Default Value”, style=wx.OK|wx.CANCEL)
樣式:幾個wx.TextCtrl的樣式也可以用在這裡。最有用的應該是wx.TE_PASSWORD,它掩飾所輸入的真實密碼。你也可以使用wx.TE_MULTILINE來使用戶能夠在對話框中輸入多行文本,也可以使用wx.TE_LEFT, wx.TE_CENTRE, 和 wx.TE_RIGHT來調整所輸入的文本的對齊位置
便利函數:wx.GetTextFromUser()、wx.GetPasswordFromUser()、wx.GetNumberFromUser(), 可以指定對話框的輸入值的類型
14. wx.列表對話框控制項
構造函數:wx.SingleChoiceDialog(parent, message, caption, choices, clientData=None, style=wx.OK | wx.CANCEL | wx.CENTRE, pos=wx.DefaultPosition)
例子:dialog = wx.SingleChoiceDialog(None, ”Pick A Word”, ”Choices”, [“Alpha”, ”Baker”, ”Charlie”, ”Delta”])
處理方法:
SetSelection(selection):設置它的預設選項,參數selection是選項的索引值
GetSelection():返回所選項的索引值
GetStringSelection():回實際所選的字元串
15. wx.ProgressDialog:進度條對話框控制項
構造函數:wx.ProgressDialog(title, message, maximum=100, parent=None, style=wx.PD_AUTO_HIDE | wx.PD_APP_MODAL)
例子:dialog = wx.ProgressDialog(“A progress box”, ”Time remaining”, progressMax, style=wx.PD_CAN_ABORT | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME)
樣式:
wx.PD_APP_MODAL:如果設置了這個樣式,進度條對整個應用程式是模式的,這將阻塞所有的用戶事件。如果沒有設置這個樣式,那麼進度條僅對它的父視窗是模式的
wx.PD_AUTO_HIDE:進度條將自動隱藏自身直到它達到它的最大值
wx.PD_CAN_ABORT:在進度條上放上一個Cancel按鈕,以便用戶停止。如何響應來自該對話框的取消將在以後說明
wx.PD_ELAPSED_TIME:顯示該對話框已經出現了多長時間
wx.PD_ESTIMATED_TIME:顯示根據已花的時間、當前的計數值和計數器的最大值所估計出的完成進度所需的總時間
wx.PD_REMAINING_TIME:顯示要完成進度所估計的剩餘時間,所需總時間-已花時間
處理方法:它的唯一的方法Update(value,newmsg=””),value參數是進度條的新的內部的值,調用update將導致進度條根據新的計數值與最大計算值的比例重繪。如果使用可選的參數newmsg,那麼進度條上的文本消息將變為該字元串,這讓你可以給用戶一個關於當前進度的文本描述。這個Update()方法通常返回True,但是,如果用戶通過Cancel按鈕已經取消了該對話框,那麼下次的Update()將返回False。這是你響應用戶的取消請求的機會,要檢測用戶的取消請求,我們建議你儘可能頻繁地Update()
16. wx.GridSizer:簡單佈局控制項
構造函數:wx.GridSizer(rows, cols, vgap, hgap)(rows和cols是整數,它們指定了網格的尺寸(行數和列數),vgap和hgap使你可以決定視窗控制項間的間隔的多少)
註:參數rows, cols, vgap, hgap都有各自的get*和set*方法:GetRows(), SetRows(rows), GetCols(),SetCols(cols), GetVGap(), SetVGap(gap), GetHGap(), 和SetHGap(gap)
.
處理方法:
Add(window, proportion=0, flag=0, border=0, userData=None) # 末尾添加一個視窗部件
Add(sizer, proportion=0, flag=0, border=0, userData=None) # 末尾添加一個Sizer
Add(size, proportion=0, flag=0, border=0, userData=None) # 末尾添加一個空白控制項
Insert(index, window, proportion=0, flag=0, border=0, userData=None) # 插入一個視窗部件
Insert(index, sizer, proportion=0, flag=0, border=0, userData=None) # 插入一個Sizer
Insert(index, size, proportion=0, flag=0, border=0, userData=None) # 插入一個空白控制項
Prepend(window, proportion=0, flag=0, border=0, userData=None) # 開頭添加一個視窗部件
Prepend(sizer, proportion=0, flag=0, border=0, userData=None) # 開頭添加一個Sizer
Prepend(size, proportion=0, flag=0, border=0, userData=None) # 開頭添加一個空白控制項
Detach(window) # 移除一個視窗部件
Detach(sizer) # 移除一個Sizer
Detach(index) # 移除一個控制項
使用方法GetSize()和 GetPosition()來得到sizer的當前尺寸和位置——這個位置是sizer相對於它所關聯的容器的
調用SetDimension(x, y, width, height)方法來指定一個sizer的尺寸,這樣sizer將根據它的新尺寸和位置重新計算它的孩子的尺寸
SetMinSize(width, height)和SetSizeHints(minW, minH, maxW, maxH)來設置最小尺寸,第二個方法使你也能夠指定一個最大尺寸,GetMinSize()來訪問整個sizer的最小尺寸
設置一個孩子的最小尺寸:SetItemMinSize(window, size),SetItemMinSize(sizer, size),SetItemMinSize(index, size)
設置控制項邊框:Add(window, 0, wx.ALL | wx.EXPAND, 5), 樣式有wx.BOTTOM、wx.LEFT、wx.RIGHT、wx.TOP、wx.ALL, wx.EXPAND表示擴展,即除去邊框外控制項間的間隔還是會保持原來的大小
尺寸與對齊樣式:
wx.ALIGN_BOTTOM:按照視窗部件被分配的空間(格子)的底部對齊
wx.ALIGN_CENTER:放置視窗部件,使視窗部件的中心處於其所分配的空間的中心
wx.ALIGN_CENTER_HORIZONTAL:在它所處的格子中,水平居中
wx.ALIGN_CENTER_VERTICAL :在它所處的格子中,垂直居中
wx.ALIGN_LEFT:靠著它所處的格子左邊緣。這是預設行為
wx.ALIGN_TOP:靠著它所處的格子的上邊緣。這是預設的行為
wx.EXPAND:填滿它所處的格子空間
wx.FIXED_MINSIZE:保持固定項的最小尺寸
wx.GROW:與wx.EXPAND相同。但比之少兩個字元,節約了時間
wx.SHAPED:視窗部件的尺寸改變時,只在一個方向上填滿格子,另一個方向上按視窗部件原先的形狀尺寸的比列填充
17. 其他佈局控制項
wx.FlexGridSizer(rows, cols, vgap, hgap):可以指定每行和每列各自的尺寸
指定行和列是否可擴展:AddGrowableCol(idx, proportion=0),AddGrowableRow(idx, proportion=0)
wx.GridBagSizer(vgap=0, hgap=0):可以添加部件到指定單元格,以及單元格可以跨行和列
Add方法:pos參數代表sizer中的視窗部件要賦予的單元格,span參數代表視窗部件應該占據的行和列的數量
Add(window, pos, span=wx.DefaultSpan, flag=0, border=0,userData=None)
Add(sizer, pos, span=wx.DefaultSpan, flag=0, border=0,userData=None)
Add(size, pos, span=wx.DefaultSpan, flag=0, border=0,userData=None)
AddItem(item)
wx.BoxSizer(orient):orient可以是wx.VERTICAL或wx.HORIZONTAL, 即只能在橫向或縱向上添加部件,擴展也只能在一個方向上擴展
wx.StaticBoxSizer(box, orient):提供一個邊框和文本標簽,orient是方向,box是一個wx.BoxSizer
19. 綁定事件:Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY), event是事件類型,handler通常是一個方法或函數
例子:self.Bind(wx.EVT_BUTTON, self.OnClick, button),將一個OnClick方法(自己定義的)綁定到按鈕button(自己定義的)上,事件類型為wx.EVT_BUTTON按鈕事件
18. wxPython簡單應用編程框架示例
1 import wx 2 3 4 class NewFrame(wx.Frame): 5 def __init__(self): 6 wx.Frame.__init__(self, None, -1, 'Title', size=(100, 200)) 7 panel = wx.Panel(self, -1) 8 button = wx.Button(panel, -1, ”Close”, pos=(130, 15), size=(40, 40)) 9 self.Bind(wx.EVT_BUTTON, self.OnCloseMe, button) # 綁定按鈕事件 10 ... 11 12 def OnCloseMe(self, event): 13 self.Close(True) # Close方法可能關閉後在後臺會繼續運行,通過任務管理器可查看 14 15 def exit(self): 16 wx.Exit() # 退出應用程式 17 18 19 if __name__ == '__main__': 20 newApp = wx.PySimpleApp() 21 newFrame = NewFrame() 22 newFrame.Show() 23 newApp.MainLoop()