class login(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.loginw = Ui_Login() self.loginw.setupUi(self) self.connect(self.loginw.buttonBox, QtCore.SIGNAL('accepted()'), self.ingresa) def ingresa(self): user = self.loginw.userEdit.text() passw = self.loginw.passEdit.text() db = QtSql.QSqlDatabase.addDatabase("QPSQL") db.setHostName("localhost") db.setDatabaseName("escuela") db.setUserName(user) db.setPassword(passw) db.setPort(5432) if db.open(): self.principal = principal() self.principal.show() self.hide() else: QtGui.QMessageBox.warning( self, u"Acceso incorrecto", u"El usuario y/o la contraseña ingresada no son correctos, revisalos", QtGui.QMessageBox.Ok)
def generate_login(self): self.login_wid = qtw.QWidget(self) self.login = Ui_Login() self.login.setupUi(self.login_wid) self.login.submit.clicked.connect(self.validate_password) self.main_wid.addWidget(self.login_wid) self.login.username.setFocus()
def __init__(self, home, mydb_helper): QMainWindow.__init__(self) self.ui = Ui_Login() self.ui.setupUi(self) self.setWindowTitle("LogIn") self.home = home self.db_helper = mydb_helper
def open_login(self): from login import Ui_Login self.window_login = QtWidgets.QMainWindow() self.login_gui = Ui_Login() self.login_gui.setupUi(self.window_login) self.window_login.show() self.window.close()
class LoginWindow(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_Login() self.ui.setupUi(self) QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.button_click) def button_click(self): global configWin global session global myapp global mail pop3Name=str(configWin.ui.lineEdit.text()) smtpName=str(configWin.ui.lineEdit_2.text()) userName=str(self.ui.lineEdit.text()) passwd=str(self.ui.lineEdit_2.text()) session=Session([pop3Name, smtpName, userName, passwd]) resultcode=session.sessionLogin() if resultcode==0: lastaccount=[pop3Name, smtpName, userName, passwd] init.writein(lastaccount) mail=MyMail(session) myapp = MyMailBox() myapp.show() myapp.ui.menubar.addMenu(lastaccount[2]).addAction(myapp.ui.logout) self.close()
class login(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.loginw = Ui_Login() self.loginw.setupUi(self) self.connect(self.loginw.buttonBox, QtCore.SIGNAL('accepted()'), self.ingresa) def ingresa(self): user = self.loginw.userEdit.text() passw = self.loginw.passEdit.text() db = QtSql.QSqlDatabase.addDatabase("QPSQL") db.setHostName("localhost"); db.setDatabaseName("escuela"); db.setUserName(user); db.setPassword(passw); db.setPort(5432); if db.open(): self.principal = principal() self.principal.show() self.hide() else: QtGui.QMessageBox.warning(self, u"Acceso incorrecto", u"El usuario y/o la contraseña ingresada no son correctos, revisalos",QtGui.QMessageBox.Ok)
def __init__(self): QtGui.QWidget.__init__(self) self.loginw = Ui_Login() self.loginw.setupUi(self) self.connect(self.loginw.buttonBox, QtCore.SIGNAL('accepted()'), self.ingresa)
def __init__(self): QtGui.QDialog.__init__(self) self.user_access_level = -1 self.ui = Ui_Login() self.ui.setupUi(self) self.ui.pushButton_2.clicked.connect(self.handleLogin) self.ui.pushButton.clicked.connect(self.close)
def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.p = parent self.ui = Ui_Login() self.ui.setupUi(self) self.connect_ctrls() if self.p.settings.is_configured() is True: self.ui.username.setText(self.p.domains.config['user']['username']) self.ui.password.setText(self.p.domains.config['user']['password'])
class Form(Ui_Login): def __init__(self): super(Form, self).__init__() self.showAcceuil() """self.browser = QTextBrowser() self.setWindowTitle('Just a dialog')""" def showAcceuil(self): self.showAcceuil = QtWidgets.QMainWindow() self.ui = Ui_Login() self.ui.setupUi(self.showAcceuil) # Login.hide() self.showAcceuil.show()
class FormLoginUser(QtGui.QDialog): users = [ ("admin", "1234"), ("asd", "123")] def __init__(self, parent = None): QtGui.QDialog.__init__(self, parent) self.ui = Ui_Login() self.ui.setupUi(self) self.ui.buttonLogin.clicked.connect(self.in_acces) def in_acces(self): user = self.ui.lineUser.text() password = self.ui.linePass.text() acces = False for i, data in enumerate(self.users): if data[0] == user: if data[1] == password: acces = True break if acces: accesQMessageBox = QtGui.QMessageBox() accesQMessageBox.setWindowTitle("Ingreso") accesQMessageBox.setText(u"Acceso Aceptado") accesQMessageBox.exec_() self.main = Main() else: accesQMessageBox = QtGui.QMessageBox() accesQMessageBox.setWindowTitle("ERROR") accesQMessageBox.setText(u"""Acceso Denegado \nIntente nuevamente""") accesQMessageBox.exec_()
class LoginWindow(QMainWindow): def __init__(self, home, mydb_helper): QMainWindow.__init__(self) self.ui = Ui_Login() self.ui.setupUi(self) self.setWindowTitle("LogIn") self.home = home self.db_helper = mydb_helper def manager_init(self, manager_id): self.home.main_Ui.bk_info.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) info = self.home.main_Ui.manager_info manager = self.db_helper.get_manager_info(manager_id) idItem = QTableWidgetItem(str(manager["manager_id"])) ageItem = QTableWidgetItem(str(manager["manager_age"])) nameItem = QTableWidgetItem(manager["manager_name"]) phoneItem = QTableWidgetItem(manager["manager_phone"]) info.setItem(0, 0, idItem) info.setItem(1, 0, nameItem) info.setItem(2, 0, ageItem) info.setItem(3, 0, phoneItem) items = [idItem, ageItem, nameItem, phoneItem] for item in items: item.setTextAlignment(Qt.AlignCenter) def login(self): manager_id = self.ui.ID.text() passwd = self.ui.passwd.text() log = self.db_helper.check_login(manager_id, passwd) if log: self.manager_init(manager_id) self.home.show() self.close() else: self.ui.prompt.insert("wrong password!")
class UIcontrol(): def __init__(self, parent=None): self.ui_login = Ui_Login() self.ui_main = Ui_Main() def ProcessesSignal(self, list, number): if number == 1: self.ui_login.updateImageUi(list[0], list[1], list[2]) self.ui_login.show() elif number == 2: self.ui_login.updateLabelUi(list[0]) elif number == 3: self.ui_main.initUserData(list) self.ui_login.hide() self.ui_main.show() def MessageSignal(self, list): self.ui_main.receiveMsg(list)
def __init__(self, parent = None): QtGui.QDialog.__init__(self, parent) self.ui = Ui_Login() self.ui.setupUi(self) self.ui.buttonLogin.clicked.connect(self.in_acces)
def __init__(self, parent=None): self.ui_login = Ui_Login() self.ui_main = Ui_Main()
class Login_Window(QtGui.QDialog): def __init__(self): QtGui.QDialog.__init__(self) self.user_access_level = -1 self.ui = Ui_Login() self.ui.setupUi(self) self.ui.pushButton_2.clicked.connect(self.handleLogin) self.ui.pushButton.clicked.connect(self.close) self.name = '' #keep track of user name def handleLogin(self): # if cannot connect to database showing error window if not self.conn(): QtGui.QMessageBox.warning( self, 'Error', 'database contecting error') # create sql query to retrieve username, password, accesslevel query = QSqlQuery() query.exec_("SELECT User_name, User_password, Access_level FROM Account") # get username and password from gui input_name = self.ui.lineEdit.text() input_pass = self.ui.lineEdit_2.text() #this flag for detect weather the username and password are valid self.flag = False while query.next(): # get username, password and accesslevel from database user_name = str(query.value(0)) user_password = str(query.value(1)) user_access_level = int(query.value(2)) # campare above information to the user inputted information if (user_name == input_name and user_password == input_pass): # if valid user found, set flag true self.flag = True self.name = user_name #check for default password if (user_password == "rcdancearts"): self.default_msg = "Remember to change your password" self.default_reply = QtGui.QMessageBox.information(self, 'Change Password', self.default_msg, QtGui.QMessageBox.Ok) # save personal information once the valid information found self.user_access_level = user_access_level #test..... self.close() # if user not found, show error message. if not self.flag: QtGui.QMessageBox.warning( self, 'Error', 'Invalid user or password') self.ui.lineEdit_2.clear() # set up database connection def getAccessLevel(self): return self.user_access_level def getUsername(self): return self.name def conn(self): self.db = QSqlDatabase.addDatabase("QMYSQL") self.db.setHostName("services1.mcs.sdsmt.edu") self.db.setDatabaseName("db_dancesoft_f15") self.db.setUserName("dancesoft_f15") self.db.setPassword("DanceSoft") return self.db.open()
class MyLogin(QtGui.QDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.p = parent self.ui = Ui_Login() self.ui.setupUi(self) self.connect_ctrls() if self.p.settings.is_configured() is True: self.ui.username.setText(self.p.domains.config['user']['username']) self.ui.password.setText(self.p.domains.config['user']['password']) def connect_ctrls(self): self.ui.Buttons.button(self.ui.Buttons.Save).clicked.connect(self.try_login) self.ui.Buttons.button(self.ui.Buttons.Cancel).clicked.connect(self.close) def set_status(self, text, color): self.ui.status.setText(str(text)) self.ui.status.setStyleSheet("#status { color : %s; }" % str(color)); def start_thread(self): self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(False) self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(False) self.loginT = authThread(self.usr, self.psw) self.set_status("Authenticatig...", "blue") self.loginT.begin() self.connect(self.loginT, QtCore.SIGNAL("loginEvent"), self.h_rsp) def try_login(self): self.usr = self.ui.username.text() self.psw = self.ui.password.text() if self.p.settings.is_configured() is True: old_u = self.p.domains.config['user']['username'] old_p = self.p.domains.config['user']['password'] if str(self.usr) != str(old_u) or str(self.psw) != str(old_p): self.start_thread() else: self.close() else: self.start_thread() def h_rsp(self, rsp): if rsp == True: data = {'user': {'username': str(self.usr), 'password': str(self.psw)}} try: self.set_status("Success", "green") self.p.settings.save_cfg(data) self.p.domains = updater.Domains() self.set_status("Retrieving domain list, please wait...", "green") self.p.dom_data = self.p.domains.get_domains() self.close() except: self.set_status("Failed to write config :(", "red") else: self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(True) self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(True) txt = self.p.get_code_text(rsp) self.set_status(str(txt), "red") self.emit(QtCore.SIGNAL("userChanged")) def keyPressEvent(self, e): if e.key() == QtCore.Qt.Key_Escape: if self.p.settings.is_configured() is False: sys.exit() else: self.close() def closeEvent(self, event): if self.p.settings.is_configured() is False: sys.exit() else: event.accept()
def log(self): Login = QtWidgets.QDialog() ui = Ui_Login() ui.setupUi(Login) Login.show() Login.exec_()
class Ui_Register(object): def __init__(self): super(Ui_Register, self).__init__() # dane do logowania do bazy danych self.db_host = 'packy.db.elephantsql.com' self.db_user = '******' self.db_name = 'htcazxfd' self.db_port = 5432 self.db_psswd = 'UE5AaV5whqnbKyD5jL9MusNCvV1yaX7T' self.conn = None def setupUi(self, MainWindow): self.window = MainWindow MainWindow.setObjectName("MainWindow") MainWindow.resize(342, 390) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.register_username_label = QtWidgets.QLabel(self.centralwidget) self.register_username_label.setGeometry(QtCore.QRect(10, 10, 181, 17)) self.register_username_label.setObjectName("register_username_label") self.register_password_label = QtWidgets.QLabel(self.centralwidget) self.register_password_label.setGeometry(QtCore.QRect(10, 80, 81, 17)) self.register_password_label.setObjectName("register_password_label") self.register_username_input = QtWidgets.QLineEdit(self.centralwidget) self.register_username_input.setGeometry(QtCore.QRect(10, 40, 201, 25)) self.register_username_input.setObjectName("register_username_input") self.register_password_input = QtWidgets.QLineEdit(self.centralwidget) self.register_password_input.setGeometry(QtCore.QRect( 10, 110, 201, 25)) self.register_password_input.setObjectName("register_password_input") self.register_mail_label = QtWidgets.QLabel(self.centralwidget) self.register_mail_label.setGeometry(QtCore.QRect(10, 150, 121, 17)) self.register_mail_label.setObjectName("register_mail_label") self.register_mail_input = QtWidgets.QLineEdit(self.centralwidget) self.register_mail_input.setGeometry(QtCore.QRect(10, 180, 201, 25)) self.register_mail_input.setObjectName("register_mail_input") self.register_date_of_birth_label = QtWidgets.QLabel( self.centralwidget) self.register_date_of_birth_label.setGeometry( QtCore.QRect(10, 220, 211, 17)) self.register_date_of_birth_label.setObjectName( "register_date_of_birth_label") self.register_date_of_birth_input = QtWidgets.QDateEdit( self.centralwidget) self.register_date_of_birth_input.setGeometry( QtCore.QRect(10, 250, 110, 25)) self.register_date_of_birth_input.setObjectName( "register_date_of_birth_input") self.register_button = QtWidgets.QPushButton(self.centralwidget) self.register_button.setGeometry(QtCore.QRect(100, 290, 151, 31)) self.register_button.setObjectName("register_button") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 342, 22)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.register_button.clicked.connect(self.register_new_user) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "Rejestracja")) self.register_username_label.setText( _translate("MainWindow", "Podaj nazwę użytkownika")) self.register_password_label.setText( _translate("MainWindow", "Podaj hasło")) self.register_mail_label.setText( _translate("MainWindow", "Podaj swój email")) self.register_date_of_birth_label.setText( _translate("MainWindow", "Podaj datę swojego urodzenia")) self.register_button.setText(_translate("MainWindow", "Zarejestruj")) self.register_date_of_birth_input.setDisplayFormat( _translate("MainWindow", "dd-MM-yyyy")) def register_new_user(self): username = self.register_username_input.text() password = self.register_password_input.text() mail = self.register_mail_input.text() date_of_birth = self.register_date_of_birth_input.text() try: self.conn = pg2.connect(host=self.db_host, database=self.db_name, user=self.db_user, password=self.db_psswd, port=self.db_port) c = self.conn.cursor() c.execute(""" INSERT INTO users (username, psswd, email, date_of_birth, amount, account_creation) VALUES ('{}', '{}', '{}', '{}', 0, CURRENT_DATE) """.format(username, password, mail, date_of_birth)) c.close() self.conn.commit() self.conn.close() self.register_success() except pg2.errors.RaiseException: self.register_error() def register_success(self): msg = QMessageBox() msg.setWindowTitle("Potwierdzenie") msg.setText("Udało Ci się zarejestrować do biblioteki gier") msg.setIcon(QMessageBox.Information) msg.setStandardButtons(QMessageBox.Ok) msg.buttonClicked.connect(self.open_login) x = msg.exec_() def register_error(self): _translate = QtCore.QCoreApplication.translate msg = QMessageBox() msg.setWindowTitle("Błąd rejestracji") msg.setText("Nie udało Ci się zarejestrować do biblioteki gier") msg.setIcon(QMessageBox.Critical) msg.setStandardButtons(QMessageBox.Retry) self.register_date_of_birth_input.setDate(QtCore.QDate(2000, 1, 1)) self.register_username_input.clear() self.register_password_input.clear() self.register_mail_input.clear() x = msg.exec_() def open_login(self): from login import Ui_Login self.window_login = QtWidgets.QMainWindow() self.login_gui = Ui_Login() self.login_gui.setupUi(self.window_login) self.window_login.show() self.window.close()
class MainWindow(qtw.QMainWindow): def __init__(self): super().__init__() self.backend = BackendStuff() self.setWindowTitle("ExamSim 9000") self.resize(900, 600) self.main_wid = qtw.QStackedWidget(self) self.generate_login() self.setCentralWidget(self.main_wid) self.show() def generate_login(self): self.login_wid = qtw.QWidget(self) self.login = Ui_Login() self.login.setupUi(self.login_wid) self.login.submit.clicked.connect(self.validate_password) self.main_wid.addWidget(self.login_wid) self.login.username.setFocus() def generate_dash(self): self.dashwid = qtw.QWidget(self) self.dash = Ui_Dash() self.dash.setupUi(self.dashwid) name = self.backend.get_name(self.currentid) self.dash.welcome.setText(f"Welcome, {name}") self.gen_dash_test_list() self.gen_score_dash() self.gen_all_scores() self.main_wid.addWidget(self.dashwid) def gen_all_scores(self): resulttuples = self.backend.fetchscores(self.currentid) rbox = qtw.QVBoxLayout() rwid = qtw.QWidget(self) rwid.setLayout(rbox) contscroll = qtw.QScrollArea(self) contscroll.setWidget(rwid) rwid.setObjectName("rwid") self.dash.allscoreslayout.addWidget(rwid) tests = [ResultListing(*a) for a in resulttuples] for i, result in enumerate(tests): x = Ui_ResultListing() rw = qtw.QWidget(self) x.setupUi(rw) x.score.setText(f"{result.score}/{result.total}") #self.tuis.append(tw) result.ui = x x.testname.setText(f"{result.testname} — {result.subjectname} ") x.viewDetails.clicked.connect( lambda annoyingbug, result=result: self.view_test_results( result.testcode, f"{result.score}/{result.total}", self. currentid)) #x.attempt.clicked.connect(lambda annoyingbug, test=result: self.goto_test(test.testcode)) rbox.addWidget(rw) rbox.addSpacing(30) rwid.setStyleSheet("#rwid { background-color: #f7f7f7;}") self.dash.tests.setAlignment(Qt.AlignCenter) rbox.setAlignment(Qt.AlignCenter) def gen_score_dash(self): scrwid = qtw.QWidget() self.score_dash = Ui_scoredash() self.score_dash.setupUi(scrwid) pg.setConfigOption('background', 'w') pg.setConfigOption('foreground', 'k') pg.setConfigOption('antialias', True) graphWidget = pg.PlotWidget() scores, testnames = self.backend.get_graph(self.currentid) ticks = list(enumerate(testnames)) pen = pg.mkPen(color=(80, 80, 80), width=1.5) graphWidget.plot([x[0] for x in ticks], scores, pen=pen, symbol='o', size=1) graphWidget.getPlotItem().getAxis('bottom').setTicks([ticks]) graphWidget.setYRange(0, 100) graphWidget.setMouseEnabled(True, False) lt = self.backend.get_last_test(self.currentid) if lt is not None: tcode, tname, tscore, total = lt self.score_dash.testname.setText(tname) self.score_dash.score.setText(f"{tscore}/{total}") self.score_dash.viewDetails.clicked.connect( lambda ab, tcode=tcode: self.view_test_results( tcode, f"{tscore}/{total}", self.currentid)) else: self.score_dash.testname.setText("No tests available") self.score_dash.score.setText("-") self.score_dash.viewDetails.setDisabled(True) overall, subjects = self.backend.get_avgs(self.currentid) self.score_dash.overallavg.setText(f"{overall*100:.2f}%") namefont = QFont("Segoe UI", 16) pfont = QFont("Segoe UI Light", 14) for subject in subjects: sname = qtw.QLabel(f"{subject[0]}", self) sname.setFont(namefont) sname.setSizePolicy(qtw.QSizePolicy.Preferred, qtw.QSizePolicy.Fixed) p = qtw.QLabel(f"{subject[1]*100:.2f}%", self) p.setStyleSheet("padding: 5px") p.setFont(pfont) p.setSizePolicy(qtw.QSizePolicy.Preferred, qtw.QSizePolicy.Fixed) p.setMinimumHeight(40) sname.setMinimumHeight(40) self.score_dash.avgs.layout().addRow(sname, p) self.score_dash.graphcontainer.addWidget(graphWidget) self.dash.scoredashlayout.addWidget(scrwid) self.dash.scoretab.setCurrentIndex(0) def view_test_results(self, testcode, score, sid): self.generate_test(testcode) qcodes = [question.qcode for question in self.questions] choices = self.backend.get_choices(testcode, sid, qcodes) # the lord alone can save us now for question, choice in zip(self.questions, choices): qui = question.ui ctext = '<font color=\"green\">Correct</font>' if question.correct == 1: qui.aans.setText(ctext) elif question.correct == 2: qui.bans.setText(ctext) elif question.correct == 3: qui.cans.setText(ctext) elif question.correct == 4: qui.dans.setText(ctext) if question.correct == choice: question.uiwid.setStyleSheet( question.uiwid.styleSheet() + "#question{background-color: #e6f9e5;}") else: question.uiwid.setStyleSheet( question.uiwid.styleSheet() + "#question{background-color: #fcd4d6;}") s = """ #a:disabled,#b:disabled,#c:disabled,#d:disabled{ color: #000000; } QRadioButton::indicator::checked{ border: 1px solid white; border-radius: 6px; background-color: #333; width: 10px; height: 10px;} """ qui.a.setStyleSheet(s) qui.b.setStyleSheet(s) qui.c.setStyleSheet(s) qui.d.setStyleSheet(s) if choice == 1: qui.a.setChecked(True) elif choice == 2: qui.b.setChecked(True) elif choice == 3: qui.c.setChecked(True) elif choice == 4: qui.d.setChecked(True) qui.a.setDisabled(True) qui.b.setDisabled(True) qui.c.setDisabled(True) qui.d.setDisabled(True) self.form.submit.disconnect() # disconnect from submit self.form.submit.setText("Back") self.form.submit.clicked.connect(self.return_to_dash) self.form.testheader.setText(self.form.testheader.text() + " — " + score) self.main_wid.setCurrentWidget(self.form) def gen_dash_test_list(self): testtuples = self.backend.fetchtests(self.currentid) tbox = qtw.QVBoxLayout() twid = qtw.QWidget(self) twid.setLayout(tbox) self.dash.tests.setWidget(twid) twid.setObjectName("twid") self.tests = [TestListing(*a) for a in testtuples] for i, test in enumerate(self.tests): if not test.attempted: x = Ui_TestListing() tw = qtw.QWidget(self) x.setupUi(tw) x.testname.setText(f"{test.testname} — {test.subjectname} ") x.questioncount.setText(f"{test.questions} questions") x.time.setText(f"{test.time} minutes") #self.tuis.append(tw) test.ui = x x.attempt.clicked.connect(lambda annoyingbug, test=test: self. goto_test(test.testcode)) tbox.addWidget(tw) tbox.addSpacing(30) twid.setStyleSheet("#twid { background-color: #f7f7f7;}") self.dash.tests.setAlignment(Qt.AlignCenter) tbox.setAlignment(Qt.AlignCenter) def goto_test(self, testcode): self.generate_test(testcode) self.main_wid.setCurrentWidget(self.form) def generate_admin_dash(self): self.dashwid = qtw.QWidget(self) self.dash = Ui_DashAdmin() self.dash.setupUi(self.dashwid) self.main_wid.addWidget(self.dashwid) self.generate_admin_tests() def modify_test(self, testcode: int): testname, questiontuples = self.backend.get_test_details(testcode) self.questions = [] self.testcode = testcode for question in questiontuples: self.questions.append( Question( # q,a,b,c,d,qcode,correct *[str(x) for x in question[1:6]], question[0], question[6])) subjects = self.backend.get_subjects() self.creator = FormCreator(self.questions, subjects) self.subjectcode = self.backend.get_subject_code(testcode) self.creator.subjectchooser.setCurrentIndex( self.creator.subjectchooser.findData(self.subjectcode)) self.creator.addquestion.clicked.connect( lambda: self.creator.add_question( Question("", "", "", "", "", 0, -1))) self.creator.submit.clicked.connect(self.submit_new_test) self.creator.testheader.setText(testname) self.main_wid.addWidget(self.creator) self.main_wid.setCurrentWidget(self.creator) def submit_new_test(self): subjectcode = self.creator.subjectchooser.currentData() testname = self.creator.testheader.text() testcode = self.testcode questions = [] question: Question = None for question in self.questions: qui: Ui_questiontemp = question.ui optcode = None if qui.a.isChecked(): optcode = 1 elif qui.b.isChecked(): optcode = 2 elif qui.c.isChecked(): optcode = 3 elif qui.d.isChecked(): optcode = 4 questions.append( Question(qui.questiontext.text(), qui.atext.text(), qui.btext.text(), qui.ctext.text(), qui.dtext.text(), question.qcode, optcode)) self.backend.submit_test_creator(subjectcode, testcode, testname, questions) self.return_to_admin_dash() def create_new_test(self): self.questions = [ Question("", '', '', '', '', 0, -1), ] self.testcode = 0 subjects = self.backend.get_subjects() self.creator = FormCreator(self.questions, subjects) self.creator.addquestion.clicked.connect( lambda: self.creator.add_question( Question("", "", "", "", "", 0, -1))) self.main_wid.addWidget(self.creator) self.main_wid.setCurrentWidget(self.creator) self.creator.submit.clicked.connect(self.submit_new_test) def finish_update_test(self): testname = self.creator.testheader.text() def export_csv(self): options = qtw.QFileDialog.Options() filename, _ = qtw.QFileDialog.getSaveFileName( self, "Export as CSV", "", "Comma Separated Value Files (*.csv);;All Files (*)", options=options) if filename: self.backend.export_csv(self.testcode, filename, self.score_list.results) def show_test_scores(self, testcode): testname, results = self.backend.get_test_scores(testcode) self.testcode = testcode self.score_list = ScoreList(testname, results) for result in self.score_list.results: result.ui.viewDetails.clicked.connect( lambda annoyingbug, result=result: (self.view_test_results( result.testcode, f"{result.score}/{result.total}", result. studentcode), self.form.submit.clicked.disconnect(), self.form.submit.clicked.connect(lambda: self. show_test_scores(testcode)))) self.score_list.back.clicked.connect(self.return_to_admin_dash) self.score_list.export.clicked.connect(self.export_csv) self.main_wid.addWidget(self.score_list) self.main_wid.setCurrentWidget(self.score_list) def generate_admin_tests(self): self.dash.newtest.clicked.connect(self.create_new_test) # just so lazy self.gen_dash_test_list() for test in self.tests: test.ui.attempted.setText('') scoresBtn = qtw.QPushButton() scoresBtn.setText("View Scores") scoresBtn.setSizePolicy(qtw.QSizePolicy.Expanding, qtw.QSizePolicy.Fixed) scoresBtn.clicked.connect(lambda annoyingbug, test=test: self. show_test_scores(test.testcode)) test.ui.horizontalLayout.addWidget(scoresBtn) test.ui.attempt.setText('Edit') test.ui.attempt.disconnect() test.ui.line_3.setVisible(False) test.ui.attempt.clicked.connect( lambda annoyingbug, test=test: self.modify_test(test.testcode)) def validate_password(self): if self.backend.validate_password(self.login.username.text(), self.login.password.text()): if self.login.username.text() != "admin": self.currentid = int(self.login.username.text()) self.generate_dash() self.main_wid.setCurrentWidget(self.dashwid) else: self.currentid = None self.generate_admin_dash() self.main_wid.setCurrentWidget(self.dashwid) else: self.login.status.setText( "<font color=\"red\"><b>Invalid credentials</b></font>") def generate_test(self, testcode): testname, questiontuples = self.backend.get_test_details(testcode) self.questions = [] self.testcode = testcode for question in questiontuples: self.questions.append( Question( # q,a,b,c,d,qcode,correct *[str(x) for x in question[1:6]], question[0], question[6])) self.form = Form(testname, self.questions) self.form.submit.clicked.connect(self.submit_test) self.main_wid.addWidget(self.form) def submit_test(self): testcode = self.testcode sid = self.currentid choices = [] qcodes = [] for question in self.form.questions: qui = question.ui if qui.a.isChecked(): choices.append(1) elif qui.b.isChecked(): choices.append(2) elif qui.c.isChecked(): choices.append(3) elif qui.d.isChecked(): choices.append(4) else: choices.append(None) qcodes.append(question.qcode) numcorrect = len([ q for q, a in zip(self.form.questions, choices) if q.correct == a ]) self.backend.submit_test(testcode, sid, qcodes, choices, numcorrect) self.generate_thanks() self.main_wid.setCurrentWidget(self.thankswid) def return_to_admin_dash(self): self.generate_admin_dash() self.main_wid.setCurrentWidget(self.dashwid) def return_to_dash(self): self.generate_dash() self.main_wid.setCurrentWidget(self.dashwid) def generate_thanks(self): self.thankswid = qtw.QWidget() self.dash = Ui_Thanks() self.dash.setupUi(self.thankswid) self.main_wid.addWidget(self.thankswid) self.dash.back.clicked.connect(self.return_to_dash)
def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_Login() self.ui.setupUi(self) QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"), self.button_click)
class Login_Window(QtGui.QDialog): def __init__(self): QtGui.QDialog.__init__(self) self.user_access_level = -1 self.ui = Ui_Login() self.ui.setupUi(self) self.ui.pushButton_2.clicked.connect(self.handleLogin) self.ui.pushButton.clicked.connect(self.close) self.name = '' #keep track of user name def handleLogin(self): # if cannot connect to database showing error window if not self.conn(): QtGui.QMessageBox.warning(self, 'Error', 'database contecting error') # create sql query to retrieve username, password, accesslevel query = QSqlQuery() query.exec_( "SELECT User_name, User_password, Access_level FROM Account") # get username and password from gui input_name = self.ui.lineEdit.text() input_pass = self.ui.lineEdit_2.text() #this flag for detect weather the username and password are valid self.flag = False while query.next(): # get username, password and accesslevel from database user_name = str(query.value(0)) user_password = str(query.value(1)) user_access_level = int(query.value(2)) # campare above information to the user inputted information if (user_name == input_name and user_password == input_pass): # if valid user found, set flag true self.flag = True self.name = user_name #check for default password if (user_password == "rcdancearts"): self.default_msg = "Remember to change your password" self.default_reply = QtGui.QMessageBox.information( self, 'Change Password', self.default_msg, QtGui.QMessageBox.Ok) # save personal information once the valid information found self.user_access_level = user_access_level #test..... self.close() # if user not found, show error message. if not self.flag: QtGui.QMessageBox.warning(self, 'Error', 'Invalid user or password') self.ui.lineEdit_2.clear() # set up database connection def getAccessLevel(self): return self.user_access_level def getUsername(self): return self.name def conn(self): self.db = QSqlDatabase.addDatabase("QMYSQL") self.db.setHostName("services1.mcs.sdsmt.edu") self.db.setDatabaseName("db_dancesoft_f15") self.db.setUserName("dancesoft_f15") self.db.setPassword("DanceSoft") return self.db.open()
def showAcceuil(self): self.showAcceuil = QtWidgets.QMainWindow() self.ui = Ui_Login() self.ui.setupUi(self.showAcceuil) # Login.hide() self.showAcceuil.show()
class MyLogin(QtGui.QDialog): def __init__(self, parent=None): QtGui.QDialog.__init__(self, parent) self.p = parent self.ui = Ui_Login() self.ui.setupUi(self) self.connect_ctrls() if self.p.settings.is_configured() is True: self.ui.username.setText(self.p.domains.config['user']['username']) self.ui.password.setText(self.p.domains.config['user']['password']) def connect_ctrls(self): self.ui.Buttons.button(self.ui.Buttons.Save).clicked.connect( self.try_login) self.ui.Buttons.button(self.ui.Buttons.Cancel).clicked.connect( self.close) def set_status(self, text, color): self.ui.status.setText(str(text)) self.ui.status.setStyleSheet("#status { color : %s; }" % str(color)) def start_thread(self): self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(False) self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(False) self.loginT = authThread(self.usr, self.psw) self.set_status("Authenticatig...", "blue") self.loginT.begin() self.connect(self.loginT, QtCore.SIGNAL("loginEvent"), self.h_rsp) def try_login(self): self.usr = self.ui.username.text() self.psw = self.ui.password.text() if self.p.settings.is_configured() is True: old_u = self.p.domains.config['user']['username'] old_p = self.p.domains.config['user']['password'] if str(self.usr) != str(old_u) or str(self.psw) != str(old_p): self.start_thread() else: self.close() else: self.start_thread() def h_rsp(self, rsp): if rsp == True: data = { 'user': { 'username': str(self.usr), 'password': str(self.psw) } } try: self.set_status("Success", "green") self.p.settings.save_cfg(data) self.p.domains = updater.Domains() self.set_status("Retrieving domain list, please wait...", "green") self.p.dom_data = self.p.domains.get_domains() self.close() except: self.set_status("Failed to write config :(", "red") else: self.ui.Buttons.button(self.ui.Buttons.Save).setEnabled(True) self.ui.Buttons.button(self.ui.Buttons.Cancel).setEnabled(True) txt = self.p.get_code_text(rsp) self.set_status(str(txt), "red") self.emit(QtCore.SIGNAL("userChanged")) def keyPressEvent(self, e): if e.key() == QtCore.Qt.Key_Escape: if self.p.settings.is_configured() is False: sys.exit() else: self.close() def closeEvent(self, event): if self.p.settings.is_configured() is False: sys.exit() else: event.accept()
from login import Ui_Login from PyQt5 import QtCore, QtGui, QtWidgets import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QDialog() ui = Ui_Login(Form) sys.exit(app.exec_())
import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget from login import Ui_Login if __name__ == '__main__': app = QApplication(sys.argv) login = QWidget() login_ui = Ui_Login() login_ui.setupUi(login) login.show() sys.exit(app.exec_())