Python 在我的登录对话框窗口退出后,我的应用程序主窗口将挂起

Python 在我的登录对话框窗口退出后,我的应用程序主窗口将挂起,python,sqlite,authentication,pyqt5,mainwindow,Python,Sqlite,Authentication,Pyqt5,Mainwindow,我是pyqt5新手,我一直在拼命尝试为我的工资单窗口应用程序创建一个登录窗口,但是当我输入凭据时,无论凭据是否正确,主应用程序都会在几秒钟后挂起。我将用户的凭据存储在sqlite3数据库中。 任何帮助都将不胜感激 Main.py import sys, sqlite3 from PyQt5.QtWidgets import QApplication, qApp from payrollmylp import * from login import Ui_Dialog from payrollD

我是pyqt5新手,我一直在拼命尝试为我的工资单窗口应用程序创建一个登录窗口,但是当我输入凭据时,无论凭据是否正确,主应用程序都会在几秒钟后挂起。我将用户的凭据存储在sqlite3数据库中。 任何帮助都将不胜感激

Main.py

import sys, sqlite3
from PyQt5.QtWidgets import QApplication, qApp
from payrollmylp import *

from login import Ui_Dialog
from payrollDb import CreateUsers


CreateUsers()

def loginSql():
    while True:
        username=uiDialog.lineEdit.text()
        password=uiDialog.lineEdit_2.text()
        with sqlite3.connect("c:\\payroll\\PayrollDb.db") as db:
            cursorLogin=db.cursor()
            authUser=("select * from users where username = ? and password = ?")
            cursorLogin.execute(authUser,(username,password))
            results=cursorLogin.fetchall()
            if results != "null":

                loginWindow.close()
            else:


                uiDialog.lineEdit.setText(" ")
                uiDialog.lineEdit_2.setText(" ")
                loginWindow.show()





if __name__ == '__main__':
    #Main Application window intialisation
    app = QApplication(sys.argv)
    MainApp = QtWidgets.QMainWindow()
    uiMain = Ui_MainWindow()
    uiMain.setupUi(MainApp)
    #login button pushed from login dialog window
    uiMain.pushButton.clicked.connect(about)


    #Login window initialisation    
    loginWindow=QtWidgets.QDialog()
    uiDialog=Ui_Dialog()
    uiDialog.setupUiDialog(loginWindow)





    #login button pushed from login dialog window
    uiDialog.pushButton.clicked.connect(lambda:loginSql())

    #login button pushed from main aplication window
    uiMain.pushButton_2.clicked.connect(lambda:loginWindow.show())
    MainApp.show()
    app.exec_() 
工资单

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox

class Ui_MainWindow(object):

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        font = QtGui.QFont()
        font.setPointSize(12)
        MainWindow.setFont(font)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(700, 10, 75, 30))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(610, 9, 81, 30))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(20, 16, 141, 30))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setTextFormat(QtCore.Qt.RichText)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(20, 54, 81, 21))
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(20, 81, 241, 30))
        self.lineEdit.setMaxLength(50)
        self.lineEdit.setObjectName("lineEdit")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(20, 120, 70, 21))
        self.label_3.setObjectName("label_3")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(20, 150, 551, 30))
        self.lineEdit_2.setMaxLength(150)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.line = QtWidgets.QFrame(self.centralwidget)
        self.line.setGeometry(QtCore.QRect(0, 180, 790, 16))
        self.line.setFrameShape(QtWidgets.QFrame.HLine)
        self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line.setObjectName("line")
        self.line_2 = QtWidgets.QFrame(self.centralwidget)
        self.line_2.setGeometry(QtCore.QRect(0, -9, 790, 20))
        self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.line_3 = QtWidgets.QFrame(self.centralwidget)
        self.line_3.setGeometry(QtCore.QRect(0, 560, 790, 60))
        self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_3.setObjectName("line_3")
        self.line_4 = QtWidgets.QFrame(self.centralwidget)
        self.line_4.setGeometry(QtCore.QRect(-10, -10, 20, 20))
        self.line_4.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_4.setObjectName("line_4")
        self.line_5 = QtWidgets.QFrame(self.centralwidget)
        self.line_5.setGeometry(QtCore.QRect(775, 1, 30, 590))
        self.line_5.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_5.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_5.setObjectName("line_5")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(20, 194, 70, 21))
        self.label_4.setObjectName("label_4")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(20, 220, 113, 30))
        self.lineEdit_3.setMaxLength(15)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_4.setGeometry(QtCore.QRect(180, 220, 113, 30))
        self.lineEdit_4.setMaxLength(5)
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.label_5 = QtWidgets.QLabel(self.centralwidget)
        self.label_5.setGeometry(QtCore.QRect(340, 194, 130, 21))
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.centralwidget)
        self.label_6.setGeometry(QtCore.QRect(500, 194, 130, 21))
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(660, 193, 100, 21))
        self.label_7.setObjectName("label_7")
        self.lineEdit_5 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_5.setGeometry(QtCore.QRect(340, 220, 113, 30))
        self.lineEdit_5.setMaxLength(10)
        self.lineEdit_5.setObjectName("lineEdit_5")
        self.lineEdit_6 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_6.setGeometry(QtCore.QRect(500, 220, 113, 30))
        self.lineEdit_6.setMaxLength(10)
        self.lineEdit_6.setObjectName("lineEdit_6")
        self.label_8 = QtWidgets.QLabel(self.centralwidget)
        self.label_8.setGeometry(QtCore.QRect(20, 276, 141, 21))
        self.label_8.setObjectName("label_8")
        self.label_9 = QtWidgets.QLabel(self.centralwidget)
        self.label_9.setGeometry(QtCore.QRect(180, 276, 101, 21))
        self.label_9.setObjectName("label_9")
        self.lineEdit_7 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_7.setGeometry(QtCore.QRect(20, 300, 113, 30))
        self.lineEdit_7.setMaxLength(10)
        self.lineEdit_7.setObjectName("lineEdit_7")
        self.lineEdit_8 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_8.setGeometry(QtCore.QRect(180, 300, 113, 30))
        self.lineEdit_8.setMaxLength(10)
        self.lineEdit_8.setObjectName("lineEdit_8")
        self.label_10 = QtWidgets.QLabel(self.centralwidget)
        self.label_10.setGeometry(QtCore.QRect(180, 194, 120, 21))
        self.label_10.setObjectName("label_10")
        self.lineEdit_9 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_9.setGeometry(QtCore.QRect(660, 220, 113, 30))
        self.lineEdit_9.setMaxLength(10)
        self.lineEdit_9.setObjectName("lineEdit_9")
        self.First_nameLb_4 = QtWidgets.QLabel(self.centralwidget)
        self.First_nameLb_4.setGeometry(QtCore.QRect(176, 390, 31, 21))
        self.First_nameLb_4.setObjectName("First_nameLb_4")
        self.Employe_noLb_7 = QtWidgets.QLabel(self.centralwidget)
        self.Employe_noLb_7.setGeometry(QtCore.QRect(190, 444, 111, 21))
        self.Employe_noLb_7.setObjectName("Employe_noLb_7")
        self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.doubleSpinBox.setGeometry(QtCore.QRect(570, 390, 111, 30))
        self.doubleSpinBox.setMaximum(744.99)
        self.doubleSpinBox.setSingleStep(1.0)
        self.doubleSpinBox.setProperty("value", 0.0)
        self.doubleSpinBox.setObjectName("doubleSpinBox")
        self.dateEdit_2 = QtWidgets.QDateEdit(self.centralwidget)
        self.dateEdit_2.setGeometry(QtCore.QRect(210, 390, 141, 30))
        self.dateEdit_2.setObjectName("dateEdit_2")
        self.First_nameLb_5 = QtWidgets.QLabel(self.centralwidget)
        self.First_nameLb_5.setGeometry(QtCore.QRect(570, 364, 131, 22))
        self.First_nameLb_5.setObjectName("First_nameLb_5")
        self.First_nameLb_6 = QtWidgets.QLabel(self.centralwidget)
        self.First_nameLb_6.setGeometry(QtCore.QRect(370, 364, 101, 22))
        self.First_nameLb_6.setObjectName("First_nameLb_6")
        self.dateEdit = QtWidgets.QDateEdit(self.centralwidget)
        self.dateEdit.setGeometry(QtCore.QRect(20, 390, 141, 30))
        self.dateEdit.setMinimumDate(QtCore.QDate(2019, 1, 1))
        self.dateEdit.setObjectName("dateEdit")
        self.First_nameLb_3 = QtWidgets.QLabel(self.centralwidget)
        self.First_nameLb_3.setGeometry(QtCore.QRect(20, 364, 151, 22))
        self.First_nameLb_3.setObjectName("First_nameLb_3")
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setEnabled(True)
        self.comboBox.setGeometry(QtCore.QRect(370, 390, 180, 30))
        self.comboBox.setEditable(False)
        self.comboBox.setCurrentText("")
        self.comboBox.setMaxVisibleItems(10)
        self.comboBox.setObjectName("comboBox")
        self.Employe_noLb_6 = QtWidgets.QLabel(self.centralwidget)
        self.Employe_noLb_6.setGeometry(QtCore.QRect(20, 444, 111, 21))
        self.Employe_noLb_6.setObjectName("Employe_noLb_6")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(550, 530, 111, 30))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(230, 530, 171, 30))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(420, 530, 111, 30))
        self.pushButton_5.setObjectName("pushButton_5")
        self.line_6 = QtWidgets.QFrame(self.centralwidget)
        self.line_6.setGeometry(QtCore.QRect(0, 350, 790, 3))
        self.line_6.setFrameShape(QtWidgets.QFrame.HLine)
        self.line_6.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_6.setObjectName("line_6")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(50, 530, 161, 30))
        self.pushButton_6.setObjectName("pushButton_6")
        self.lineEdit_10 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_10.setGeometry(QtCore.QRect(190, 470, 113, 30))
        self.lineEdit_10.setMaxLength(10)
        self.lineEdit_10.setObjectName("lineEdit_10")
        self.lineEdit_11 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_11.setGeometry(QtCore.QRect(20, 470, 113, 30))
        self.lineEdit_11.setMaxLength(10)
        self.lineEdit_11.setObjectName("lineEdit_11")
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.comboBox.setCurrentIndex(-1)
        self.pushButton_5.clicked.connect(self.lineEdit.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_2.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_3.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_4.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_5.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_6.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_7.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_8.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_9.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_10.clear)
        self.pushButton_5.clicked.connect(self.lineEdit_11.clear)
        self.pushButton_4.clicked.connect(MainWindow.close)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Employee Payroll Management System"))
        self.pushButton.setText(_translate("MainWindow", "About"))
        self.pushButton_2.setText(_translate("MainWindow", "Login"))
        self.label.setText(_translate("MainWindow", "Logged in as:"))
        self.label_2.setText(_translate("MainWindow", "Name"))
        self.label_3.setText(_translate("MainWindow", "Address"))
        self.label_4.setText(_translate("MainWindow", "Branch"))
        self.label_5.setText(_translate("MainWindow", "Employee No."))
        self.label_6.setText(_translate("MainWindow", "Insurance No."))
        self.label_7.setText(_translate("MainWindow", "Tax Code"))
        self.label_8.setText(_translate("MainWindow", "Insurance Rate"))
        self.label_9.setText(_translate("MainWindow", "Tax Rate"))
        self.label_10.setText(_translate("MainWindow", "Department"))
        self.First_nameLb_4.setText(_translate("MainWindow", "To"))
        self.Employe_noLb_7.setText(_translate("MainWindow", "Net Pay"))
        self.First_nameLb_5.setText(_translate("MainWindow", "Hours Worked"))
        self.First_nameLb_6.setText(_translate("MainWindow", "Type"))
        self.First_nameLb_3.setText(_translate("MainWindow", "Payment Period"))
        self.Employe_noLb_6.setText(_translate("MainWindow", "Gross Pay"))
        self.pushButton_4.setText(_translate("MainWindow", "Exit"))
        self.pushButton_3.setText(_translate("MainWindow", "Generate Pay Slip"))
        self.pushButton_5.setText(_translate("MainWindow", "Reset"))
        self.pushButton_6.setText(_translate("MainWindow", "Load Employees"))



class Ui_Dialog(object):

    def setupUiDialog(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(500, 400)
        Dialog.setMinimumSize(QtCore.QSize(500, 400))
        Dialog.setMaximumSize(QtCore.QSize(500, 400))
        font = QtGui.QFont()
        font.setPointSize(12)
        Dialog.setFont(font)
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(330, 379, 161, 21))
        font = QtGui.QFont()
        font.setPointSize(6)
        self.label.setFont(font)
        self.label.setLayoutDirection(QtCore.Qt.RightToLeft)
        self.label.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(30, 80, 111, 31))
        self.label_2.setObjectName("label_2")
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(160, 80, 261, 31))
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(120, 280, 93, 30))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(Dialog)
        self.pushButton_2.setGeometry(QtCore.QRect(280, 280, 93, 30))
        self.pushButton_2.setObjectName("pushButton_2")
        self.lineEdit_2 = QtWidgets.QLineEdit(Dialog)
        self.lineEdit_2.setGeometry(QtCore.QRect(160, 150, 261, 31))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
        self.label_3 = QtWidgets.QLabel(Dialog)
        self.label_3.setGeometry(QtCore.QRect(30, 150, 111, 31))
        self.label_3.setObjectName("label_3")

        self.pushButton_2.pressed.connect(Dialog.close)




        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Login"))
        self.label.setText(_translate("Dialog", "Only for authorized users."))
        self.label_2.setText(_translate("Dialog", "Username:"))
        self.pushButton.setText(_translate("Dialog", "Login"))
        self.pushButton_2.setText(_translate("Dialog", "Cancel"))
        self.label_3.setText(_translate("Dialog", "Password:"))

def about():
        mbox = QMessageBox()
        mbox.setWindowTitle("About")
        mbox.setText("Troy Ismond".center(40)+ "\n"+"Dravidian University, Kuppam".center(40)+ "\n"+ "Masters of Computer Science Final Year" + "\n" + "Mini Project".center(40))
        mbox.setStandardButtons(QMessageBox.Ok)       
        mbox.exec_()
payrollDb.py

import sqlite3, os

dirName="c:\\payroll"
def CreateUsers():
    if not os.path.exists(dirName):
        os.mkdir(dirName)

    with sqlite3.connect("c:\\payroll\\PayrollDb.db") as db:
        cursor=db.cursor()

    cursor.execute("""
    CREATE TABLE IF NOT EXISTS users(
    username varchar(10) primary key,
    password varchar(20) not null)
    """)

    cursor.execute("Select * from users where username = 'admin'" )
    if cursor.fetchone=="null":
        cursor.execute("Insert into users(username,password) values('admin','admin123')")

    cursor.execute("Select * from users where username = 'manager'" )
    if cursor.fetchone=="null":
        cursor.execute("Insert into users(username,password) values('manager','manager123')")

    cursor.execute("Select * from users where username = 'hruser' ")
    if cursor.fetchone=="null":
        cursor.execute("Insert into users(username,password) values('hruser','hruser123')")

    db.commit()

为什么在
loginSql
中使用
而True:
?它可以挂起所有代码。有时最简单的东西最难找到。谢谢。