wxPython常用控制項,wxpython控制項
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()