文章目录

  • 一、创建user表
  • 2、给表添加数据
  • 3、利用wxpython创建登录界面
  • 4、执行结果如图


一、创建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、执行结果如图

python mysql数据库模块化设计 python数据库界面设计_wxpython


python mysql数据库模块化设计 python数据库界面设计_MySQL_02

python mysql数据库模块化设计 python数据库界面设计_wxpython_03