在前面一篇文章中,学习了常用的交互状态使用方法,例如是否可用、是否显示等。本节将通过一个案例来综合运用这些知识。

前置知识

查看前一篇文章:

控件交互状态:是否可用setEnabled_是否显示setVisible_是否隐藏setHidden_是否编辑setWindowModified_是否为活跃状态isActiveWindow_关闭close_PyQt学习笔记(二十七)

案例要求

创建一个窗口,包含一个文本框、一个按钮和一个标签。要求:

  • 默认状态:
    • 标签隐藏
    • 文本框和按钮显示
    • 按钮状态不可用
  • 当文本框里有内容时,按钮可用,否则不可用
  • 当文本内容为52txr时,点击按钮则显示标签,并展示为登陆成功,否则为失败

案例代码

涉及的知识点:

  • 文本框的创建:QLineEdit
  • 文本框检测内容变更:textChanged信号
  • 文本框内容的获取:text()方法
# -*- coding: UTF-8 -*-
from PyQt5.Qt import *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("交互状态案例学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        # 添加三个子控件
        label = QLabel(self)
        # label.setText("标签")
        label.move(100, 50)
        label.hide()  # 默认标签隐藏

        le = QLineEdit(self)
        le.setText("文本框")
        le.move(100, 100)
        btn = QPushButton(self)
        btn.setText("登录")
        btn.move(100, 150)
        btn.setEnabled(False)  # 默认按钮不可用

        def text_cao(text):  # text就是文本内容
            print("文本内容改变", text)
            # if len(text) > 0:
            #     btn.setEnabled(True)
            # else:
            #     btn.setEnabled(False)
            btn.setEnabled(len(text) > 0)

        def check():
            # print("按钮被点击")
            label.show()
            label.resize(200, 50)
            if le.text() == "52txr":
                label.setText("登录成功!")
                print(label.text())
            else:
                label.setText("登录失败!")
                print(label.text())

        btn.pressed.connect(check)
        le.textChanged.connect(text_cao)


# 方便在模板里进行调试
if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

案例代码演示


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/jiaohudesign.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 07 月 25 日
如果觉得我的文章对你有用,请随意赞赏