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 :如果使用了这个样式,那么当用户在控件内按下回车键时,一个文本输入事件被触发。否则,按键事件内在的由该文本控件或该对话框管理。
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