wxpython实现一个登录窗口

对可视化编程挺感兴趣的,把过程记录下来,登录窗口还是挺基础的,不过前提是要能够基本了解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()

三、运行效果 

登录成功

登录失败

 输入为空

 四、总结

一个简单的测试,后期尝试一下连接数据库做个完整的信息管理系统,路过的大佬如果发现什么错误请指出,我对此讲不胜感激!

这种方法实现的界面,缺点就是当改变页面大小时,控件的位置是不变的,也就是绝对位置,改变页面大小后显得很不美观。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些代码示例,帮助您实现一个基本的wxPython登录界面。首先,我们需要导入wxPython库: ``` import wx ``` 然后,我们需要定义一个LoginFrame类,该类继承自wx.Frame类。定义类的代码如下: ``` class LoginFrame(wx.Frame): def __init__(self, parent, title=''): wx.Frame.__init__(self, parent, title=title, size=(300, 200)) # 创建面板 panel = wx.Panel(self) # 创建标签、文本框和按钮 self.label_username = wx.StaticText(panel, label="用户名:") self.text_username = wx.TextCtrl(panel) self.label_password = wx.StaticText(panel, label="密码:") self.text_password = wx.TextCtrl(panel, style=wx.TE_PASSWORD) self.button_login = wx.Button(panel, label="登录") # 设置布局管理器 sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.label_username, 0, wx.ALL, 5) sizer.Add(self.text_username, 0, wx.EXPAND|wx.ALL, 5) sizer.Add(self.label_password, 0, wx.ALL, 5) sizer.Add(self.text_password, 0, wx.EXPAND|wx.ALL, 5) sizer.Add(self.button_login, 0, wx.ALIGN_CENTER|wx.ALL, 5) panel.SetSizer(sizer) # 绑定事件处理函数 self.button_login.Bind(wx.EVT_BUTTON, self.on_login) def on_login(self, event): # 在这里编写登录逻辑 # 获取用户名和密码 username = self.text_username.GetValue() password = self.text_password.GetValue() # 在这里执行登录操作 # 如果登录成功,则关闭登录窗口,否则提示错误信息 if username == 'admin' and password == '123': self.Close() else: wx.MessageBox('用户名或密码错误。', '错误', wx.OK|wx.ICON_ERROR) ``` 以上代码定义了一个LoginFrame类,该类包含一个带有标签、文本框和按钮的面板,以及一个用于处理登录事件的方法on_login。 最后,我们可以在应用程序中创建LoginFrame实例,并显示登录窗口: ``` if __name__ == '__main__': app = wx.App() login_frame = LoginFrame(None, title="登录") login_frame.Show() app.MainLoop() ``` 这就是一个基本的wxPython登录窗口实现。您可以根据自己的需要进行定制和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心机小兔

你的鼓励会让我更加努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值