对可视化编程挺感兴趣的,把过程记录下来,登录窗口还是挺基础的,不过前提是要能够基本了解python类的继承和函数重写的方法。
话就不多说了,直接开始
一、首先安装wxpython
直接pip就行了
pip install wxpython
安装成功后,win+R,输入 python ,import wx,不报错即证明安装成功
二、实现代码
详细的在代码里都有注释,就不多做赘述了
import wx
class login(wx.Frame): # 父类为wx中的Frame
# 由于学过C++,直接把这里的函数叫做构造函数了,叫习惯了,把构造函数重写一下
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,title = '登录',pos = (600,300),size=(400,300))
# 创建一个画板panel,类似于Qt种的frame和widgit
pen = wx.Panel(self)
# 创建几个静态文本,类似于Qt中的label,分别是页面名称,用户名和密码
self.title = wx.StaticText(pen,label='数学与计算科学学院登录系统',pos=(70,60))
self.user = wx.StaticText(pen,label = '用户名',pos=(87,102))
self.pswd = wx.StaticText(pen,label = '密 码',pos=(87,138))
# 设置字体样式
font = wx.Font(15,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL)
self.title.SetFont(font)
# 创建两个文本输入框,用于获取用户名和密码
self.user = wx.TextCtrl(pen,pos = (130,100),size = (148,22))
self.pswd = wx.TextCtrl(pen,pos = (130,135),size = (148,22),style = wx.TE_PASSWORD) # 设置输入内容为密码格式
# 接下来就是实现登录和退出两个按钮事件,先把两个按钮添加到panel画布上
self.bt_confirm = wx.Button(pen,label='登录',pos = (140,165),size = (60,25))
self.bt_cancel = wx.Button(pen,label='退出',pos = (210,165),size = (60,25))
# 然后实现两个按钮的功能,这里就简单示范一下,不搞数据库了,刚学,也不是很会匹配数据库中的数据,按钮的定义在刚刚提到了
# 进行绑定
self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel)
# 实现两个按钮的功能
def OnclickSubmit(self,event):
mes = ""
username = self.user.GetValue() # 获取输入框内容
password = self.pswd.GetValue() # 获取输入框内容
if username == 'admin' and password == 'admin':
mes = '登录成功'
wx.MessageBox(mes) # 用wx带有的MessageBox来提示输入是否正确
elif username == "" or password == "":
mes = '用户名或密码不能为空'
wx.MessageBox(mes)
else:
mes = '用户名或密码错误'
wx.MessageBox(mes)
def OnclickCancel(self,event):
self.user.SetValue("") # 若点击退出,清空文本框内容
self.pswd.SetValue("")
self.Close() # 点击退出,关闭窗口
if __name__ == '__main__':
app = wx.App()
Login = login(parent=None,id=-1)
Login.Show()
app.MainLoop()
三、运行效果
登录成功
登录失败
输入为空
四、总结
一个简单的测试,后期尝试一下连接数据库做个完整的信息管理系统,路过的大佬如果发现什么错误请指出,我对此讲不胜感激!
这种方法实现的界面,缺点就是当改变页面大小时,控件的位置是不变的,也就是绝对位置,改变页面大小后显得很不美观。