成功登录显示消息2(错误登录和成功登录)pyqt5

2024-05-16 23:44:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有3个登录信息:

字段空 错误登录 成功登录

如果输入不正确的信息登录他显示我的错误登录,我想要的,确定完成。 如果单击“登录btn”而不填写字段,则会显示错误消息“我想要的”确定完成。 但如果输入正确的信息,他会向我显示两条不同的消息,他会同时向我显示错误登录和成功登录:

from cgitb import enable
from peewee import *
from PyQt5.QtCore import QPropertyAnimation
from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtWidgets import QPushButton, QLineEdit
import sys
import pymysql

pymysql.install_as_MySQLdb()

class MyWindow(QtWidgets.QMainWindow):
    def __init__(self, maxWidth=None):
        super(MyWindow, self).__init__()
        self.mysql_db = MySQLDatabase('data', user='root', password='toor', host='127.0.0.1', port=3306)
        uic.loadUi('MainWindow.ui', self)
        self.handel_buttons()
        self.db_connection()
        self.close_popup_error()
        self.popup_success()
        self.hide_frame()
        self.close_popup_error_empty()


    def db_connection(self):
        self.cur = self.mysql_db.cursor()
        print('connected')

    def handel_buttons(self):
 
        #### Buttons for LOGIN page ######

        self.btn_log.clicked.connect(self.page_login)
        self.btn_close_popup_empty.clicked.connect(lambda: self.frame_empty.hide())
        self.btn_close_popup_2.clicked.connect(lambda: self.frame_success.hide())
        self.btn_close_popup.clicked.connect(lambda: self.frame_error.hide())


    def page_login(self):
        username = self.lineEdit_10.text()
        password = self.lineEdit_5.text()

        if len(username) == 0 or len(password) == 0:
            self.frame_empty.show() ### if fields empty show error msg 

        else:
            self.cur.execute(''' SELECT username , password FROM users''')
            data = self.cur.fetchall()

            for row in data:
                if row[0] == username and row[1] == password:
                    self.frame_success.show()  ##if username & password CORRECT show success msg 

                else:
                    self.frame_error.show() ##if username & password INCORRECT show error msg


    def close_popup_error(self):
        self.frame_error.hide()
        print('error Login ')

    def close_popup_error_empty(self):
        self.frame_empty.hide()
        print('Field empty')

    def popup_success(self):
        self.frame_success.hide()
        print('success login')



if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

Error Field

incorrect info login

Success login


Tags: importselfcloseifdefshowusernameerror
1条回答
网友
1楼 · 发布于 2024-05-16 23:44:00

我无法测试它,但您可以获取数据库中的所有用户,然后检查所有用户的if/else,其中一个用户可以获取SUCCESS,而其他用户可以获取ERROR

您不应该使用else,但仅当您在没有SUCCESS的情况下完成for循环时才应设置错误

差不多

#  - before for-loop  -

found = False

#  - for-loop  -

for row in data:
    if row[0] == username and row[1] == password:
        self.frame_success.show()  # if username & password CORRECT show success msg 
        found = True
        break  # there is no need to check others

#  - after for-loop  -

if not found:
    self.frame_error.show()  # if username & password INCORRECT show error msg

Python对此也有特殊的构造

else需要与for相同的缩进,而不是与if相同的缩进

for row in data:
    if row[0] == username and row[1] == password:
        self.frame_success.show()  # if username & password CORRECT show success msg 
        break  # it needs it to skip `else`
else:  # executed when `break` was not used 
    self.frame_error.show()  # if username & password INCORRECT show error msg

相关问题 更多 >