我們設(shè)計開發(fā)的界面之所以稱為用戶界面,是因為它能響應(yīng)使用者的操作,然后執(zhí)行相關(guān)指令,如果設(shè)計出來的界面只能夠進行瀏覽閱讀,那么只能稱之為圖片或者可讀文本。
在響應(yīng)使用者的操作之前,我們要來了解幾個名詞。
1) 事件
事件就是用戶執(zhí)行的動作,例如我們?nèi)c擊一個按鈕,這就是一個事件
2) 事件類型
事件也是有分類的,例如我們點擊按鈕和松開按鈕,這就屬于兩種類型
3) 事件源
事件由哪些控件控制發(fā)生
4) 事件處理者
它是wxPython內(nèi)部的一個wx.EvtHandler子類中的一個方法。
理解了這幾個概念,下面我們開始進一步學習。
1. 綁定事件
事件的綁定即我們把一個函數(shù)捆綁到一個可發(fā)生改變的控件上,例如我們?yōu)榇_定按鈕綁定添加一個事件來驗證相關(guān)信息,語法格式如下:
Button_login.Bind(wx.EVT_BUTTON,OnclickEventName)
wx.EVT_BUTTON是事件類型選擇了按鈕類型,OnclickEventName為點擊按鈕時執(zhí)行的方法名。
我們通過這種方法來完善上一節(jié)創(chuàng)建的登錄界面,代碼如下:
import wx class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, "登錄界面", size=(300, 300)) panel = wx.Panel(self)#創(chuàng)建一個畫布,然后創(chuàng)建功能區(qū)并放到畫布上 self.title = wx.StaticText(panel,label = '登陸界面') self.username = wx.StaticText(panel,label = '用戶:') self.user_name = wx.TextCtrl(panel,style = wx.TE_LEFT) self.userpassword = wx.StaticText(panel,label = '密碼:') self.user_password = wx.TextCtrl(panel,style = wx.TE_PASSWORD) self.button_login = wx.Button(panel,label = '登陸') self.button_login.Bind(wx.EVT_BUTTON,self.OnclickEventname) ...和上一節(jié)一致,在這里省略.... def OnclickEventname(self,event): ms = '' urnm = self.user_name.GetValue() pwd = self.user_password.GetValue() if urnm == '' or pwd == '': ms = '用戶或密碼不能為空' elif urnm == 'qy' and pwd == '123456': ms = '登陸成功' else: ms = '用戶或密碼錯誤' wx.MessageBox(ms) if __name__ == "__main__": app = wx.App() frame = MyFrame() frame.Show() app.MainLoop()
運行圖為:
我們主要對綁定的函數(shù)部分進行掌握即可,函數(shù)中的內(nèi)容為獲取了我們在用戶和密碼框中輸入的內(nèi)容,分三種判斷方式返回三種結(jié)果,然后通過MessageBox方法把內(nèi)容顯示在提示框中,我們要注意在綁定的時候的代碼:
self.button_login.Bind(wx.EVT_BUTTON,self.OnclickEventname)
事件就是通過這一行代碼和下面的函數(shù)綁定在了一起,每當我們點擊一次按鈕,按鈕就會執(zhí)行函數(shù)中的內(nèi)容。
2. 總結(jié)
事件綁定還被分為一對一事件和一對多事件,一對多事件可以對一個事件處理者進行多事件源的處理,可以幫助我們完成更復雜的操作,在這里就先不作過多的講解,大家把一對一事件的綁定內(nèi)容掌握牢固就可以完成基礎(chǔ)的界面開發(fā)。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程