wxpython配合MySQL数据库完成用户登录页面的设计

一、创建user表

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import pymysql#调用MySQL模块
db=pymysql.connect(host='127.0.0.1',user='root',password='root',db='python',charset='utf8')#创建链接
cur=db.cursor()#设置游标
tem=cur.execute('select version()')#判断链接是否成功成功则返回1
if tem!='':
    print('链接成功')
else:
    print('链接失败!')
cur.execute("DROP TABLE IF EXISTS user")#创建表
sql="""
CREATE TABLE user (
  name varchar(50) NOT NULL,
  password varchar(50) NOT NULL,
  PRIMARY KEY ( name )
)  ENGINE=MyISAM  DEFAULT CHARSET=utf8;
"""
cur.execute(sql)#执行sql语句
db.cursor()#关闭数据库

2、给表添加数据

# -*- coding: utf-8 -*-
"""
Created on Mon May  3 10:16:24 2021


"""
import sys #调用模块
sys.path.append(r"D:/python练习/Data/MySQL")#需要调用的py文件路径
import tmep#调用创建好的python制做MySQL表文件
import pymysql#调用MySQL模块
db=pymysql.connect(host='127.0.0.1',user='root',password='root',db='python',charset='utf8')#链接数据库
cur=db.cursor()
data=[("root",'root'),
      ("123456",'123456'),
      ]#创建写入数据
try:
    cur.executemany("insert into user(name,password )values(%s,%s)", data)#调用执行行函数写入数据
    db.commit()
except :
    db.rollback()
db.cursor()#关闭数据库链接

3、利用wxpython创建登录界面

import wx
import sys #调用模块
sys.path.append(r"D:/python练习/Data/MySQL")#需要调用的py文件路径
import tmep1#调用创建好的python制做MySQL表文件
from sys import exit
class MyFrame(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, '用户登录', size=(400, 300),style = wx.DEFAULT_FRAME_STYLE)
        # 创建面板
        panel = wx.Panel(self)
        panel.Bind(wx.EVT_ERASE_BACKGROUND,self.OnEraseBack)
        # 创建“确定”和“取消”按钮,并绑定事件
        self.bt_confirm = wx.Button(panel, label='确定')
        self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
        self.bt_cancel = wx.Button(panel, label='取消')
        self.bt_cancel.Bind(wx.EVT_BUTTON,self.OnclickCancel)
        # 创建文本,左对齐        
        self.title = wx.StaticText(panel, label="浩宇游戏")
        self.label_user = wx.StaticText(panel, label="用户名:")
        self.text_user = wx.TextCtrl(panel, style=wx.TE_LEFT)
        self.label_pwd = wx.StaticText(panel, label="密   码:")
        self.text_password = wx.TextCtrl(panel, style=wx.TE_PASSWORD)
        # 添加容器,容器中控件按横向并排排列
        hsizer_user = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_user.Add(self.label_user, proportion=0, flag=wx.ALL, border=5)
        hsizer_user.Add(self.text_user, proportion=1, flag=wx.ALL, border=5)
        hsizer_pwd = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_pwd.Add(self.label_pwd, proportion=0, flag=wx.ALL, border=5)
        hsizer_pwd.Add(self.text_password, proportion=1, flag=wx.ALL, border=5)
        hsizer_button = wx.BoxSizer(wx.HORIZONTAL)
        hsizer_button.Add(self.bt_confirm, proportion=0, flag=wx.ALIGN_CENTER, border=5)
        hsizer_button.Add(self.bt_cancel, proportion=0, flag=wx.ALIGN_CENTER, border=5)
        # 添加容器,容器中控件按纵向并排排列
        vsizer_all = wx.BoxSizer(wx.VERTICAL)
        vsizer_all.Add(self.title, proportion=0, flag=wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER,
                        border=15)
        vsizer_all.Add(hsizer_user, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=45)
        vsizer_all.Add(hsizer_pwd, proportion=0, flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=45)
        vsizer_all.Add(hsizer_button, proportion=0, flag=wx.ALIGN_CENTER | wx.TOP, border=15)
        panel.SetSizer(vsizer_all)
    def pngSize(self):#加载图片函数
      p = wx.Image("D:/笔记截图/Camera Roll/TE1.jpg", wx.BITMAP_TYPE_JPEG).ConvertToBitmap()  # 载入图片
      img = p.ConvertToImage()
      bgm = img.Scale(400,300)
      return wx.Bitmap(bgm)#返回 bitmap函数值    
    def OnEraseBack(self,event):#设置画布背景函数
        dc = event.GetDC()
        if not dc:
            dc = wx.ClientDC(self)
            rect = self.GetUpdateRegion().GetBox()
            dc.SetClippingRect(rect)
        dc.Clear()
        dc.DrawBitmap(self.pngSize(),0 ,0)
    def  OnclickSubmit(self,event):#判断输入用户或密码函数
        import pymysql#加载MySQL模块
        db=pymysql.connect(host='127.0.0.1',user='root',password='root',db='python')#创建链接
        cursor=db.cursor()
        tem=cursor.execute('select version()')#tem接受返回值
        if tem!=1:#判断链接是否成功成功
         print('链接失败!')
         exit(1)
        message = ""
        username = self.text_user.GetValue()     # 获取输入的用户名
        password = self.text_password.GetValue() # 获取输入的密码
        key=cursor.execute("select *from user where name=%s and password=%s" ,(username,password))#执行查询户名和密码的SQL语言 执行成功则返回1赋值给key
        result = cursor.fetchall()#获取查询内容为一个元组
        for i in result:#遍历这个元组
            username=i[0] #把获取的用户名赋值给username
            password=i[1]#把获取的密码赋值给password
        if username==''or password=='':#判断用户名或密码是否为空
            message = '用户名或密码不为空'
        elif username=='root'and password=='root':#判断用户是否为超级用户
            message='超级管理员登录权限'
        elif key!=1:#接受值key不为1时
            message='用户名或密码错误'
        elif (username!='root'and key==1)and( password!='root'and  key==1):#返回值为1但是用户不为root用户
             message='普通用户权限登录'
        wx.MessageBox(message)    
    def OnclickCancel(self,event):
        """ 点击取消按钮,执行方法 """
        self.text_user.SetValue("")     # 清空输入的用户名                              
        self.text_password.SetValue("") # 清空输入的密码 
                    
if __name__ == '__main__':
    app = wx.App()                      # 初始化
    frame = MyFrame(parent=None,id=-1)  # 实例MyFrame类,并传递参数    
    frame.Show()                        # 显示窗口
    app.MainLoop()                      # 调用主循环方法
    

4、执行结果如图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
下面是一个简单的 wxPython 实现数据库登录窗口示例: ```python import wx import pymysql class LoginFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1, 'Database Login', size=(300, 200)) panel = wx.Panel(self, -1) vbox = wx.BoxSizer(wx.VERTICAL) hbox1 = wx.BoxSizer(wx.HORIZONTAL) self.host_label = wx.StaticText(panel, -1, 'Host:', size=(50, -1)) hbox1.Add(self.host_label, flag=wx.RIGHT, border=10) self.host_text = wx.TextCtrl(panel, -1, 'localhost') hbox1.Add(self.host_text, proportion=1) vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) hbox2 = wx.BoxSizer(wx.HORIZONTAL) self.user_label = wx.StaticText(panel, -1, 'User:', size=(50, -1)) hbox2.Add(self.user_label, flag=wx.RIGHT, border=10) self.user_text = wx.TextCtrl(panel, -1, '') hbox2.Add(self.user_text, proportion=1) vbox.Add(hbox2, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) hbox3 = wx.BoxSizer(wx.HORIZONTAL) self.password_label = wx.StaticText(panel, -1, 'Password:', size=(50, -1)) hbox3.Add(self.password_label, flag=wx.RIGHT, border=10) self.password_text = wx.TextCtrl(panel, -1, '', style=wx.TE_PASSWORD) hbox3.Add(self.password_text, proportion=1) vbox.Add(hbox3, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) hbox4 = wx.BoxSizer(wx.HORIZONTAL) self.database_label = wx.StaticText(panel, -1, 'Database:', size=(50, -1)) hbox4.Add(self.database_label, flag=wx.RIGHT, border=10) self.database_text = wx.TextCtrl(panel, -1, '') hbox4.Add(self.database_text, proportion=1) vbox.Add(hbox4, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) hbox5 = wx.BoxSizer(wx.HORIZONTAL) self.connect_button = wx.Button(panel, -1, 'Connect') hbox5.Add(self.connect_button, flag=wx.RIGHT, border=10) self.cancel_button = wx.Button(panel, -1, 'Cancel') hbox5.Add(self.cancel_button) vbox.Add(hbox5, flag=wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM, border=10) panel.SetSizer(vbox) self.connect_button.Bind(wx.EVT_BUTTON, self.on_connect) self.cancel_button.Bind(wx.EVT_BUTTON, self.on_cancel) def on_connect(self, event): host = self.host_text.GetValue() user = self.user_text.GetValue() password = self.password_text.GetValue() database = self.database_text.GetValue() try: conn = pymysql.connect(host=host, user=user, password=password, database=database) print('Connected to database.') conn.close() except pymysql.Error as e: print('Error connecting to database:', e) def on_cancel(self, event): self.Close() if __name__ == '__main__': app = wx.App() frame = LoginFrame() frame.Show() app.MainLoop() ``` 在这个示例中,我们使用 wxPython 的各种布局管理器来创建一个简单的登录窗口,包括四个文本框和两个按钮,其中 Connect 按钮用于连接数据库,Cancel 按钮用于关闭窗口。 当用户单击 Connect 按钮时,我们通过 pymysql 模块连接到数据库。如果连接成功,则在控制台输出 "Connected to database.",否则输出错误消息。 注意,这个示例中的数据库连接是非常简单的,只是用于演示 wxPython 中如何创建登录窗口和连接到数据库。在实际应用中,需要根据实际需求进行更复杂的错误处理和安全措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值