1,wx.Button 的構造函數,如下所示:
wx.Button(parent , id , label , pos , size =wx.DefaultSize , style =0, validator , name ="button ")
參數label 是顯示在按鈕上的文本。它可以在程式運作期間使用SetLabel() 來改變,并且使用GetLabel() 來擷取。
2,wx.TextCtrl 類的構造函數較小且比其父類wx.Window 更精細,它增加了兩個參數:
wx.TextCtrl(parent , id , value ="", pos =wx.DefaultPosition , size =wx.DefaultSize , style =0, validator =wx.DefaultValidator,name =wx.TextCtrlNameStr)
單行wx.TextCtrl 的樣式
wx.TE_CENTER :控件中的文本居中。
wx.TE_LEFT :控件中的文本左對齊。預設行為。
wx.TE_NOHIDESEL :文本始終高亮顯示,隻适用于Windows 。
wx.TE_PASSWORD :不顯示所鍵入的文本,代替以星号顯示。
wx.TE_PROCESS_ENTER :如果使用了這個樣式,那麼當使用者在控件内按下Enter鍵時,一個文本輸入事件被觸發。否則,按鍵事件内在的由該文本控件或該對話框管理。
wx.TE_PROCESS_TAB :如果指定了這個樣式,那麼通常的字元事件在Tab 鍵按下時建立(一般意味一個制表符将被插入文本)。否則,tab 由對話框來管理,通常是控件間的切換。
wx.TE_READONLY :文本控件為隻讀,使用者不能修改其中的文本。
wx.TE_RIGHT :控件中的文本右對齊。
3,先上執行個體的GUI先睹為快,如下圖所示:
4, 程式源代碼如下:
# -*- coding: utf-8 -*-
import wx
class myFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, id=-1, title="GUI toolkit")
#################################################################################################
# 登入名
self.st_user = wx.StaticText(self, -1, "登入名 : ", (100, 40))
self.tc_user = wx.TextCtrl(self, -1, "", (160, 40))
#################################################################################################
# 密碼控制
self.st_pwd = wx.StaticText(self, -1, "密 碼 : ", (100, 70))
self.tc_password = wx.TextCtrl(self, -1, "", (160, 70), style=wx.TE_PASSWORD)
#################################################################################################
# 确定按鈕
self.ok_btn = wx.Button(self, -1, "确定", (100, 100), (70, 20))
#################################################################################################
# 取消按鈕
self.cancel_btn = wx.Button(self, -1, "清空", (180, 100), (70, 20))
#################################################################################################
# 使用者名與密碼顯示區
self.up_monitor = wx.StaticText(self, -1, "", (100, 130))
#################################################################################################
# 控件與事件綁定在一起
self.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.ok_btn)
self.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.cancel_btn)
def OnButtonClick(self, event):
if event.GetEventObject() == self.ok_btn:
print("确定")
if self.tc_user.GetValue() == '':
wx.MessageBox("使用者名為空,請輸入使用者名,再繼續......", "提示")
elif self.tc_password.GetValue() == '':
wx.MessageBox("密碼為空,請輸入密碼,再繼續......", "提示")
else:
self.up_monitor.SetLabel(self.st_user.GetLabel() + self.tc_user.GetValue()+'\n'
+ self.st_pwd.GetLabel() + self.tc_password.GetValue())
if event.GetEventObject() == self.cancel_btn:
print("清空")
if self.tc_user.GetValue() == '':
wx.MessageBox("使用者名為空,請輸入使用者名,再繼續......", "提示")
elif self.tc_password.GetValue() == '':
wx.MessageBox("密碼為空,請輸入密碼,再繼續......", "提示")
else:
self.tc_user.SetValue("")
self.tc_password.SetValue("")
self.up_monitor.SetLabel("")
class myApp(wx.App):
def __init__(self):
wx.App.__init__(self)
def OnInit(self):
frame = myFrame()
frame.Show(True)
return True
if __name__ == "__main__":
app = myApp()
app.MainLoop()
5,代碼運作環境
Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18)
wxPython 4.0.7.post2