pyqt5多界面切换,关联数据库校验,注册登录修改密码操作练习import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QPushButton, QLabel,QLineEditfrom PyQt5.QtGui import QPalette,QBrush,QPixmapimport pygamepygame.mixer.init()import pymysqlclass FirstUi(QMainWindow):"""首先进入界面"""def __init__(self):super(FirstUi, self).__init__()self.init_ui()def init_ui(self):self.resize(800, 600)self.setWindowTitle('登录首页')pygame.mixer.music.stop()#界面背景图palette = QPalette()palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/登录首页背景.jpg")))self.setPalette(palette)# 左侧文字显示label_bj = 'border-width:2px;border-style:solid;font-size:15px;' \'border-color:rgb(255,170,0);background-color:rgb(100,149,237);'label_kd = 250 # 文字框初始宽label_gd = 350 # 文字框初始高label_kkd = 120 # 文字框初始宽label_kgd = 30 # 文字框初始高self.label = QLabel(self)self.label.setText("用户名")self.label.move(label_kd, label_gd)self.label.setFixedSize(label_kkd, label_kgd)self.label.setStyleSheet(label_bj)self.label1 = QLabel(self)self.label1.setText("密 码")self.label1.move(label_kd, label_gd + 40)self.label1.setFixedSize(label_kkd, label_kgd)self.label1.setStyleSheet(label_bj)# 信息反馈self.label2 = QLabel(self)self.label2.setText("信息反馈")self.label2.move(label_kd, label_gd + 120)self.label2.setFixedSize(label_kkd + 230, label_kgd)self.label2.setStyleSheet(label_bj)# 按钮 发送邮件self.button = QPushButton(self)self.button.setText("注 册")self.button.move(label_kd, label_gd + 80)self.button.setFixedSize(label_kkd - 40, label_kgd)self.button.setStyleSheet(label_bj)self.button1 = QPushButton(self)self.button1.setText("登 录")self.button1.move(label_kd + 90, label_gd + 80)self.button1.setFixedSize(label_kkd - 40, label_kgd)self.button1.setStyleSheet(label_bj)self.button2 = QPushButton(self)self.button2.setText("忘记密码")self.button2.move(label_kd + 180, label_gd + 80)self.button2.setFixedSize(label_kkd - 40, label_kgd)self.button2.setStyleSheet(label_bj)self.button3 = QPushButton(self)self.button3.setText("修改密码")self.button3.move(label_kd + 270, label_gd + 80)self.button3.setFixedSize(label_kkd - 40, label_kgd)self.button3.setStyleSheet(label_bj)# 按键 注 册 点击触发self.button.clicked.connect(self.openimage_ze)# 按键 登 录 点击触发self.button1.clicked.connect(self.openimage_dl)# 按键忘记密码点击触发self.button2.clicked.connect(self.openimage_xg)# 按键忘记密码点击触发self.button3.clicked.connect(self.openimage_xgmm)lineEdit_kd = 380 # 文字框初始宽lineEdit_gd = 350 # 文字框初始高lineEdit_kkd = 220 # 文字框初始宽lineEdit_kgd = 30 # 文字框初始高# 右侧文字输入栏lineEdit_bj = 'border-width:2px;border-style:solid;font-size:15px;' \'border-color:rgb(255,255,0);background-color:rgb(100,170,160);'self.lineEdit = QLineEdit(self)self.lineEdit.setText("zbjckm@")self.lineEdit.move(lineEdit_kd, lineEdit_gd)self.lineEdit.setFixedSize(lineEdit_kkd - 10, lineEdit_kgd)self.lineEdit.setStyleSheet(lineEdit_bj)self.lineEdit1 = QLineEdit(self)self.lineEdit1.setText("szcNSP850219")self.lineEdit1.move(lineEdit_kd, lineEdit_gd + 40)self.lineEdit1.setFixedSize(lineEdit_kkd - 10, lineEdit_kgd)self.lineEdit1.setStyleSheet(lineEdit_bj)def slot_btn_functiona(self):self.hide()self.s = Jie_a_Ui()self.s.show()def slot_btn_functionb(self):self.hide()self.s = Jie_b_Ui()self.s.show()def sjk_lj(self):# 连接database 数据库self.conn = pymysql.connect(host='127.0.0.1', port=3306, user='szc', password='szcNSP850219', database='szc_sql',charset='utf8')def openimage_ze(self):"""注 册 按钮 """# 用户名self.user = self.lineEdit.text()# 密码self.password = self.lineEdit1.text()#登录数据库self.sjk_lj()# 得到一个可以执行SQL语句的光标对象self.cursor = self.conn.cursor()#查看用户名是否存在sql = "SELECT * FROM userinfo where username = '%s'" % self.userself.count = self.cursor.execute(sql)if self.count == 1:self.label2.setText(self.user+":用户名已存在")returnelse:sql = "insert into userinfo (username,passwd,createdate,state,statedate) values('%s','%s',now(),'US10',now()) " % (self.user, self.password)self.count = self.cursor.execute(sql)mit()self.label2.setText(self.user+":恭喜您注册成功")# 关闭光标对象self.cursor.close()# 关闭数据库连接self.conn.close()def openimage_dl(self):"""登 录 按钮 """# 用户名self.user = self.lineEdit.text()# 密码self.password = self.lineEdit1.text()# 登录数据库self.sjk_lj()# 得到一个可以执行SQL语句的光标对象self.cursor = self.conn.cursor()# 查看用户名是否存在sql = "SELECT * FROM userinfo where username = '%s'" % self.userself.count = self.cursor.execute(sql)if self.count == 0:self.label2.setText(self.user + ":用户名不存在")else:sql = "SELECT passwd FROM userinfo where username = '%s'" % self.userself.cursor.execute(sql)self.sjk_mm = self.cursor.fetchone()[0] # 获取密码if self.password == self.sjk_mm:self.slot_btn_functiona()else:self.label2.setText(self.user + ":您输入的密码不符")# 关闭光标对象self.cursor.close()# 关闭数据库连接self.conn.close()def openimage_xg(self):"""忘记密码 按钮 """# 用户名self.user = self.lineEdit.text()# 密码self.password = self.lineEdit1.text()# 登录数据库self.sjk_lj()# 得到一个可以执行SQL语句的光标对象self.cursor = self.conn.cursor()# 查看用户名是否存在sql = "SELECT * FROM userinfo where username = '%s'" % self.userself.count = self.cursor.execute(sql)if self.count == 0:self.label2.setText(self.user + ":用户名不存在")else:sql = "SELECT passwd FROM userinfo where username = '%s'" % self.userself.cursor.execute(sql)self.sjk_mm = self.cursor.fetchone()[0] # 获取密码self.label2.setText(self.user+" 您的密码:" +self.sjk_mm[0:len(self.sjk_mm)-4] +'**' +self.sjk_mm[len(self.sjk_mm)-2:len(self.sjk_mm)] )# 关闭光标对象self.cursor.close()# 关闭数据库连接self.conn.close()def openimage_xgmm(self):"""忘记密码 按钮 """self.slot_btn_functionb()class Jie_a_Ui(QWidget):"""二层界面"""def __init__(self):super(Jie_a_Ui, self).__init__()self.init_ui()def init_ui(self):self.resize(800, 600)self.setWindowTitle('登录界面')# 界面背景图palette = QPalette()palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/登录背景.jpg")))self.setPalette(palette)#背景音乐pygame.mixer.music.load('./images/爱笑的眼睛.MP3')pygame.mixer.music.play()self.btn = QPushButton('退回首页', self)self.btn.setGeometry(50, 500, 100, 50)self.btn.clicked.connect(self.slot_btn_function)def slot_btn_function(self):self.hide()self.f = FirstUi()self.f.show()class Jie_b_Ui(QWidget):"""二层界面"""def __init__(self):super(Jie_b_Ui, self).__init__()self.init_ui()# 界面背景图palette = QPalette()palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/修改密码.jpg")))self.setPalette(palette)# 背景音乐pygame.mixer.music.load('./images/修炼爱情.MP3')pygame.mixer.music.play()def init_ui(self):self.resize(800, 600)self.setWindowTitle('修改密码')label_bj = 'border-width:2px;border-style:solid;font-size:15px;' \'border-color:rgb(255,170,0);background-color:rgb(100,149,237);'label_kd = 250 # 文字框初始宽label_gd = 350 # 文字框初始高label_kkd = 120 # 文字框初始宽label_kgd = 30 # 文字框初始高self.label = QLabel(self)self.label.setText("用户名")self.label.move(label_kd, label_gd)self.label.setFixedSize(label_kkd, label_kgd)self.label.setStyleSheet(label_bj)self.label1 = QLabel(self)self.label1.setText("密 码")self.label1.move(label_kd, label_gd + 40)self.label1.setFixedSize(label_kkd, label_kgd)self.label1.setStyleSheet(label_bj)# 信息反馈self.label2 = QLabel(self)self.label2.setText("新密码")self.label2.move(label_kd, label_gd + 80)self.label2.setFixedSize(label_kkd , label_kgd)self.label2.setStyleSheet(label_bj)# 信息反馈self.label3 = QLabel(self)self.label3.setText("信息反馈")self.label3.move(label_kd, label_gd + 160)self.label3.setFixedSize(label_kkd + 230, label_kgd)self.label3.setStyleSheet(label_bj)# 右侧文字输入栏lineEdit_bj = 'border-width:2px;border-style:solid;font-size:15px;' \'border-color:rgb(255,255,0);background-color:rgb(100,170,160);'lineEdit_kd = 380 # 文字框初始宽lineEdit_gd = 350 # 文字框初始高lineEdit_kkd = 220 # 文字框初始宽lineEdit_kgd = 30 # 文字框初始高self.lineEdit = QLineEdit(self)self.lineEdit.setText("zbjckm@")self.lineEdit.move(lineEdit_kd, lineEdit_gd)self.lineEdit.setFixedSize(lineEdit_kkd - 10, lineEdit_kgd)self.lineEdit.setStyleSheet(lineEdit_bj)self.lineEdit1 = QLineEdit(self)self.lineEdit1.setText("szcNSP850219")self.lineEdit1.move(lineEdit_kd, lineEdit_gd + 40)self.lineEdit1.setFixedSize(lineEdit_kkd - 10, lineEdit_kgd)self.lineEdit1.setStyleSheet(lineEdit_bj)self.lineEdit2 = QLineEdit(self)self.lineEdit2.setText("新密码输入框")self.lineEdit2.move(lineEdit_kd, lineEdit_gd + 80)self.lineEdit2.setFixedSize(lineEdit_kkd - 10, lineEdit_kgd)self.lineEdit2.setStyleSheet(lineEdit_bj)self.button2 = QPushButton(self)self.button2.setText("修改密码")self.button2.move(label_kd , label_gd + 120)self.button2.setFixedSize(label_kkd +50, label_kgd)self.button2.setStyleSheet(label_bj)# 按键修改密码点击触发self.button2.clicked.connect(self.openimage_xg)self.button3 = QPushButton(self)self.button3.setText("退回首页")self.button3.move(label_kd +180, label_gd + 120)self.button3.setFixedSize(label_kkd +50, label_kgd)self.button3.setStyleSheet(label_bj)# 按键修改密码点击触发self.button3.clicked.connect(self.slot_btn_function)def sjk_lj(self):# 连接database 数据库self.conn = pymysql.connect(host='127.0.0.1', port=3306, user='szc', password='szcNSP850219', database='szc_sql',charset='utf8')def openimage_xg(self):"""修改密码 按钮 """# 用户名self.user = self.lineEdit.text()# 密码self.password = self.lineEdit1.text()# 登录数据库self.sjk_lj()# 得到一个可以执行SQL语句的光标对象self.cursor = self.conn.cursor()self.password_new = self.lineEdit2.text()# 查看用户名是否存在sql = "SELECT * FROM userinfo where username = '%s'" % self.userself.count = self.cursor.execute(sql)if self.count == 0:self.label3.setText(self.user + ":用户名不存在")else:sql = "SELECT passwd FROM userinfo where username = '%s'" % self.userself.cursor.execute(sql)self.sjk_mm = self.cursor.fetchone()[0] # 获取密码if self.password == self.sjk_mm:sql = "update userinfo set passwd='%s' where username ='%s' " % (self.password_new, self.user)self.count = self.cursor.execute(sql)mit()self.label3.setText(self.user + ":您的密码已修改")else:self.label3.setText(self.user + ":您输入的密码不符")# 关闭光标对象self.cursor.close()# 关闭数据库连接self.conn.close()def slot_btn_function(self):self.hide()self.f = FirstUi()self.f.show()def main():#主界面打开函数app = QApplication(sys.argv)w = FirstUi()w.show()sys.exit(app.exec_())if __name__ == '__main__':main()
1500字范文,内容丰富有趣,写作好帮手!