import sys

from PySide6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit, QVBoxLayout, QHBoxLayout, QFrame

from PySide6.QtGui import QFont

class Login(QWidget):

    def __init__(self):

        super().__init__()

        self.start_ui()

    def start_ui(self):

        self.generar_formulario()

        self.show()

    def generar_formulario(self):

        self.main_layout = QVBoxLayout()

        container_user = QFrame(self)

        hbox_layout_user = QHBoxLayout(container_user)

        user_label = QLabel('USUARIO: ', container_user)

        self.user_input = QLineEdit(container_user)

        font = QFont('Arial', 26)

        font.setBold(True)

        user_label.setFont(font)

        hbox_layout_user.addWidget(user_label)

        hbox_layout_user.addWidget(self.user_input)

        container_password = QFrame(self)

        hbox_layout_password = QHBoxLayout(container_password)

        password_label = QLabel('CONTRASEÑA: ', container_password)

        self.password_input = QLineEdit(container_password)

        self.password_input.setEchoMode(QLineEdit.Password)

        

        password_label.setFont(font)

        hbox_layout_password.addWidget(password_label)

        hbox_layout_password.addWidget(self.password_input)

        self.main_layout.addWidget(container_user)

        self.main_layout.addWidget(container_password)

        self.button_validation = QPushButton('Validar', self)

        self.button_validation.clicked.connect(self.Validar_Credenciales)

        self.main_layout.addWidget(self.button_validation)

        

        self.resul_label = QLabel(self)

        #self.resul_label.setFont(QFont('Arial', 12))

        self.main_layout.addWidget(self.resul_label)

               

        

        container_user.move(50, 50)

        container_password.move(50, 150)

        self.button_validation.move(150, 250)

        self.resul_label.move(60, 350)

        

        #self.setLayout(self.main_layout)

    def Validar_Credenciales(self):

        usuario = "Pepe"

        password = "123"

        

        usuario_get = self.user_input.text()

        contraseña_get = self.password_input.text()

        

        if usuario_get == usuario and contraseña_get == password:

            self.resul_label.setText(f"\tBienvenido {usuario},\n  aqui tenemos recomendaciones de videos")

            self.resul_label.adjustSize()

                        

        else:

            self.resul_label.setText("Ingresa bien tu contraseña estupido")

            self.resul_label.adjustSize()

if __name__ == '__main__':

    app = QApplication(sys.argv)

    login = Login()

    sys.exit(app.exec())

我以为当我输入的一切都是正确的时,它会显示一个按钮

在标签下面写着欢迎使用用户

推荐答案

您可以创建按钮,但将其设置为hidden,直到密码和用户名与所需的值匹配,方法是监听QLineEdit.textChanged信号,并在每次更改小部件内容时判断输入到两行编辑中的值.然后你可以拨打QPushButton.setHidden(False)来显示隐藏的按钮.

尽管我不建议以这种方式存储用户凭据...下面是一个例子:

import sys

from PySide6.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit, QVBoxLayout, QHBoxLayout, QFrame

from PySide6.QtGui import QFont

class Login(QWidget):

    def __init__(self):
        super().__init__()
        self.start_ui()

    def start_ui(self):
        self.generar_formulario()
        self.show()

    def generar_formulario(self):
        self.main_layout = QVBoxLayout()
        container_user = QFrame(self)
        hbox_layout_user = QHBoxLayout(container_user)
        user_label = QLabel('USUARIO: ', container_user)
        self.user_input = QLineEdit(container_user)
        font = QFont('Arial', 26)
        font.setBold(True)
        user_label.setFont(font)
        hbox_layout_user.addWidget(user_label)
        hbox_layout_user.addWidget(self.user_input)
        container_password = QFrame(self)
        hbox_layout_password = QHBoxLayout(container_password)
        password_label = QLabel('CONTRASEÑA: ', container_password)
        self.password_input = QLineEdit(container_password)
        self.password_input.setEchoMode(QLineEdit.Password)
        password_label.setFont(font)
        hbox_layout_password.addWidget(password_label)
        hbox_layout_password.addWidget(self.password_input)
        self.main_layout.addWidget(container_user)
        self.main_layout.addWidget(container_password)
        self.button_validation = QPushButton('Button', self)
        self.button_validation.setHidden(True)
        self.button_validation.clicked.connect(self.Validar_Credenciales)
        self.main_layout.addWidget(self.button_validation)
        self.resul_label = QLabel(self)
        #self.resul_label.setFont(QFont('Arial', 12))
        self.main_layout.addWidget(self.resul_label)
        container_user.move(50, 50)
        container_password.move(50, 150)
        self.button_validation.move(150, 250)
        self.resul_label.move(60, 350)
        self.usuario = "Pepe"
        self.password = "123"
        self.password_input.textChanged.connect(self.on_text_changed)
        self.user_input.textChanged.connect(self.on_text_changed)
        #self.setLayout(self.main_layout)

    def on_text_changed(self):
        usuario_get = self.user_input.text()
        contraseña_get = self.password_input.text()
        if usuario_get == self.usuario and contraseña_get == self.password:
            self.button_validation.setHidden(False)

    def Validar_Credenciales(self):
        usuario_get = self.user_input.text()
        contraseña_get = self.password_input.text()
        if usuario_get == self.usuario and contraseña_get == self.password:
            self.resul_label.setText(f"\tBienvenido {self.usuario},\n  aqui tenemos recomendaciones de videos")
            self.resul_label.adjustSize()
        else:
            self.resul_label.setText("Ingresa bien tu contraseña estupido")
            self.resul_label.adjustSize()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    login = Login()
    sys.exit(app.exec())

Python-3.x相关问答推荐

使用Polars阅读按日期键分区的最新S3镶木地板文件

按长度和字母数字对Pandas 数据帧列进行排序

如何获取实例化 `types.GenericAlias` 的下标类?

python3,将整数转换为字节:对于小整数使用 to_bytes() 有哪些替代方法?

Python base64.b32hexencode 未创建预期结果

将数据框中的值与另一个数据框中的多列进行比较,以获取条目以有效方式匹配的列表列表

使用 python 查找标记的元素

python2和python3中的列表生成器

非拉丁字符的Python正则表达式不起作用

无法使用 Python 和 Selenium 检索 href 属性

从 Python2 到 Python3 的这种解包行为的变化是什么?

Python 3x 的最佳机器学习包?

pysftp vs. Paramiko

python - 错误 R10(启动超时)-> Web 进程未能在启动后 60 秒内绑定到 $PORT

tensorflow 中 numpy.newaxis 的替代方案是什么?

AttributeError:系列对象没有属性iterrows

TypeError:多个基地有实例布局冲突

用 Anaconda 安装了一个包,无法在 Python 中导入

使用 Python 3 读取 CSV 文件

十六进制字符串到 Python 3.2 中的带符号整数?