卑微小丁 2021-03-10 16:57 采纳率: 100%
浏览 80
已采纳

pyqt5登录界面,为登录失败后第二次登录就会异常退出

 错误详情

代码

import sys

import MySQLdb
from PyQt5.QtWidgets import QWidget, QApplication

from RfidAttendance.login_ui import Ui_Dialog

db = MySQLdb.connect("localhost", "root", "root", "contact", charset='utf8')
cursor = db.cursor()


class login(QWidget, Ui_Dialog):
    def __init__(self, parent=None):
        super(login, self).__init__(parent)
        self.setupUi(self)
        self.retranslateUi(self)
        self.pushButton.clicked.connect(self.login)

    def init(self):
        self.lineEdit.clear()
        self.lineEdit_2.clear()

    def login(self):
        if self.radioButton.isChecked():
            accnum = self.lineEdit.text()
            password = self.lineEdit_2.text()
            sql = "select accnum from account "
            cursor.execute(sql)
            AccnumResults = cursor.fetchall()
            print(AccnumResults)
            AccnumList = []
            AccnumList.clear()
            for i in AccnumResults:
                AccnumList.append(i[0])
            if accnum not in AccnumList:
                print("登录失败,无此用户!")
                self.init()
            else:
                sql2 = "select password from account where accnum = '%s'" % accnum
                cursor.execute(sql2)
                PasswordResults = cursor.fetchall()
                print(PasswordResults)
                PasswordList = []
                PasswordList.clear()
                for i in PasswordResults:
                    PasswordList.append(i[0])
                if password not in PasswordList:
                    print("请检查密码")
                    self.init()
            cursor.close()
        elif self.radioButton_2.isChecked():
            accnum = self.lineEdit.text()
            password = self.lineEdit_2.text()
            sql = "select accnum from administrators "
            cursor.execute(sql)
            AccnumResults = cursor.fetchall()
            print(AccnumResults)
            AccnumList = []
            AccnumList.clear()
            for i in AccnumResults:
                AccnumList.append(i[0])
            print(AccnumList)
            if accnum not in AccnumList:
                print("登录失败,无此用户!")
                self.init()
            else:
                sql2 = "select password from administrators where accnum = '%s'" % accnum
                cursor.execute(sql2)
                PasswordResults = cursor.fetchall()
                print(PasswordResults)
                PasswordList = []
                PasswordList.clear()
                for i in PasswordResults:
                    PasswordList.append(i[0])
                if password not in PasswordList:
                    print("请检查密码")
                    self.init()
                else:
                    print("登录成功")
                    self.init()
            cursor.close()
        else:
            print("请选择人员类别")
            self.init()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    log = login()
    log.show()
    sys.exit(app.exec_())
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 17:20
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 5月15日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集