https://blog.youkuaiyun.com/WYKB_Mr_Q/article/details/129310865
https://blog.youkuaiyun.com/qq_40880583/article/details/131098134?spm=1001.2014.3001.5502
这是之前的步骤↑
以下是main函数的代码,测试可运行,我只是修改了两个大佬的代码
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox
from login1 import Ui_MainWindow # example这里是你的命名文件
from register import Ui_register_2
from CZmima import Ui_CZmima
from train1 import Ui_train1
import sqlite3
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setupUi(self)
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.show()
self.ui.pushButton.clicked.connect(self.register)
self.ui.pushButton_3.clicked.connect(self.login) # 绑定注册按钮和跳转至注册页面的函数
self.ui.pushButton_2.clicked.connect(self.reset) # 绑定重置密码按钮和跳转至重置密码页面的函数
def login(self):
# 连接数据库
conn1 = sqlite3.connect(".\mrsoft.db")
cursor1 = conn1.cursor()
user_id = self.ui.lineEdit.text() # 获取输入的账号
password = self.ui.lineEdit_2.text() # 获取输入的密码
# sql语句,判断数据库中是否拥有这账号和密码
sql = 'select user_id, password from user where user_id=? and password =?'
cursor1.execute(sql, (user_id, password))
# 获取一致的部分,存在表示输入正确,不存在提示错误
data = cursor1.fetchall()
conn1.commit()
cursor1.close()
conn1.close()
# 账号和密码不为空时候,才进入
if data:
self.close()
ImageWindow.show()
else:
QMessageBox.information(self, "提示", "您的登录账号/密码错误或为空!",
QMessageBox.Close)
# 跳转到注册界面
def register(self):
RegisterWindow.show() # 打开注册页面
self.close() # 关闭当前登录页面
# 跳转到重置密码界面
def reset(self):
ResetWindow.show() # 打开重置密码页面
self.close() # 关闭当前登录页面
# 注册界面
class Register(QMainWindow, Ui_register_2):
def __init__(self, parent=None):
super(Register, self).__init__(parent)
self.ui = Ui_register_2()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.reg) # 绑定注册按钮和注册函数
self.ui.pushButton_2.clicked.connect(self.back1) # 绑定返回按钮和返回登录页面的函数
def back1(self):
self.close() # 关闭当前注册页面
win.show()
def id_exist(self, user_id):
conn = sqlite3.connect("./mrsoft.db")
cursor = conn.cursor()
# user_id = self.lineEdit.text() # 获取账号
# 从数据库中查找是否有输入的账号
sql = 'select user_id from user where user_id=?'
cursor.execute(sql, (user_id,))
# 获取符合条件的所有信息
data = cursor.fetchall()
cursor.close()
conn.close()
# 若数据存在表示已有该账号存于数据库中
if data:
return True
else:
return False
def reg(self):
conn1 = sqlite3.connect(".\mrsoft.db")
cursor1 = conn1.cursor()
user_id = self.ui.lineEdit.text()
password = self.ui.lineEdit_2.text()
confirm = self.ui.lineEdit_3.text()
if password == confirm and password and user_id:
if self.id_exist(user_id):
QMessageBox.information(self, "提示", "该用户名已存在!可通过忘记密码找回",
QMessageBox.Ok)
else:
# sql语句,符合条件的给数据库中加入新的账号和密码
sql = 'insert into user (user_id, password) values (?, ?)'
cursor1.execute(sql, (user_id, password))
QMessageBox.information(self, "提示", "注册成功!请返回登录",
QMessageBox.Ok)
# 如果两次输入密码不一致,发出提示
elif password != confirm:
QMessageBox.information(self, "提示", "两次输入的密码不一致,请重新输入!",
QMessageBox.Ok)
# 其他情况,报错
else:
QMessageBox.information(self, "提示", "输入错误!请重新输入!",
QMessageBox.Ok)
conn1.commit()
cursor1.close()
conn1.close()
# 检验注册的账户是否存在
class CZmima(QMainWindow, Ui_CZmima):
def __init__(self, parent=None):
super(CZmima, self).__init__(parent)
self.ui = Ui_CZmima()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.ret) # 绑定密码重置键和密码重置函数
self.ui.pushButton_2.clicked.connect(self.back2) # 绑定返回按钮和返回登录页面的函数
def back2(self):
self.close()
win.show()
def id_exist(self, user_id):
conn = sqlite3.connect("./mrsoft.db")
cursor = conn.cursor()
# user_id = self.lineEdit.text() # 获取账号
# 从数据库中查找是否有输入的账号
sql = 'select user_id from user where user_id=?'
cursor.execute(sql, (user_id,))
# 获取符合条件的所有信息
data = cursor.fetchall()
cursor.close()
conn.close()
# 若数据存在表示已有该账号存于数据库中
if data:
return True
else:
return False
def ret(self):
conn3 = sqlite3.connect(".\mrsoft.db")
cursor3 = conn3.cursor()
user_id = self.ui.lineEdit.text()
password = self.ui.lineEdit_2.text()
confirm = self.ui.lineEdit_3.text()
if password == confirm and password and user_id:
# 判断账号是否存在,如存在则更改密码,否则报错
if self.id_exist(user_id):
sql = 'update user set password=? where user_id=?'
cursor3.execute(sql, (password, user_id))
QMessageBox.information(self, "提示", "密码已更改!请返回登录",
QMessageBox.Ok)
else:
QMessageBox.information(self, "提示", "该用户名不存在!请返回注册",
QMessageBox.Ok)
elif password != confirm:
QMessageBox.information(self, "提示", "两次输入的密码不一致,请重新输入!",
QMessageBox.Ok)
else:
QMessageBox.information(self, "提示", "输入错误!请重新输入",
QMessageBox.Ok)
conn3.commit()
cursor3.close()
conn3.close()
# 检验注册的账户是否存在
class ImageWindow(QMainWindow, Ui_train1):
def __init__(self, parent=None):
super(ImageWindow, self).__init__(parent)
self.ui = Ui_train1()
self.ui.setupUi(self)
if __name__ == '__main__':
# 连接到SQLite数据库,建立数据库文件mrsoft.db,如果文件不存在,自动建立。
conn = sqlite3.connect('.\mrsoft.db')
# 创建一个cursor(游标)
cursor = conn.cursor()
# 执行一条SQL语句,创建user,包括账号user_id与密码password(只能执行一次,执行一次以后会报错,提示 table user已经存在,所以需要用#注释掉,但第一运行时请删除注释符#)
# cursor.execute('create table user (user_id varchar(30) primary key, password varchar)')
# 关闭游标
cursor.close()
# 提交事务
conn.commit()
# 关闭connection
conn.close()
app = QApplication(sys.argv)
# 实例化前面定义的四个页面,否则页面无法显示
ImageWindow = ImageWindow()
ResetWindow = CZmima()
RegisterWindow = Register()
win = MainWindow()
sys.exit(app.exec_())
4826

被折叠的 条评论
为什么被折叠?



