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