Reputation: 21
I am new to pyqt5 and i have been desperately trying to make a login window for my payroll windows application however when i put in the credentials whether they are right or wrong the main app hangs after a few seconds. I have the user's credentials stored in an sqlite3 db. Any help would be much appreciated.
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_()
payrollmylp.py
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()
Upvotes: 0
Views: 42