pyQt5 学习笔记(10)控件状态

一、控件交互与状态

1. 控件使能状态

控件使能状态表明了这个控件是否是可用的,比如一个按钮,通常使用灰色来表示为不可点击。在pyQt中,可以通过setEnabled()函数来设置控件的使能状态,以下代码绘制了一个无法被点击的按钮:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.resize(200,200)

#创建一个按钮,父控件为为:w 显示文本为: 无效按钮
btn = QPushButton("无效按钮",w)
# 设置按钮为无效状态
btn.setEnabled(False)

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行效果如下所示,可以看到按键为灰色:
在这里插入图片描述

2. 控件可视化

可以通过setVisible()来设置一个控件是否可视,以下代码创建一个按键,但是设置为不可视:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.resize(200,200)

#创建一个按钮,父控件为为:w 显示文本为: 无效按钮
btn = QPushButton("无效按钮",w)
# 设置按钮不可见
btn.setVisible(False)

w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

运行效果如下:
在这里插入图片描述

3. 控件的信息提示

一些控件当我们光标停留在上面的时候,会显示一个小框来提示,可以通过setToolTip()来设置。

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

w = QWidget()
w.resize(200,200)

btn = QPushButton("按钮",w)
btn.setToolTip("这是一个按钮")  #当光标停留在这个控件上,显示一个文本
w.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

程序运行效果如下所示
在这里插入图片描述

二、练习:模拟一个密码输入窗口

以下程序模拟了一个密码的登录界面:

from PyQt5.Qt import *
import sys

#0.创建一个自定义的窗口类
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("密码登录框")
        self.resize(500,500)
        self.setup_ui()

    def setup_ui(self):
        #1. 创建一个标签,用来显示输入的密码是否正确
        label = QLabel(self)
        label.setText("标签")
        label.move(100,50)
        label.hide()                   # 隐藏标签
        #2. 创建一个输入框,提供用户输入接口
        le = QLineEdit(self)
        le.setText("文本框")
        le.move(100,100)
        #3. 创建一个登录按键
        btn = QPushButton(self)
        btn.setText("登录")
        btn.move(100,150)
        btn.setEnabled(False)#########
        #4. 槽函数:检测文本框的内容
        def key_slot(text):
            print("文本内容被改变",text)
            if len(text) > 0:
                #4.1 如果有内容,“登录”按键有效
                btn.setEnabled(True)
                #4.2 反之无效
            else:
                btn.setEnabled(False)
        #5. 连接槽函数
        le.textChanged.connect(key_slot)

        #6. 槽函数:
        def check():
            print("按钮被点击了")
            # 获取文本框内容
            context = le.text()
            # 判定是否是:123
            if context == "123":
            # 是 ->显示影藏的提示标签,展示文本:密码正确
                label.show()
                label.setText("登录成功")
                label.adjustSize()
            else:
                label.show()
                label.setText("登录失败")
                label.adjustSize()

        btn.pressed.connect(check)


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

运行效果如下所示:
在这里插入图片描述
第37行:textChanged信号是带参数的,所以槽函数可以用一个text参数来接收
第49/53行:adjustSize()用来标签能自动的调节大小,否则会显示不正常的

这个小程序用了2个槽函数,一个是当按键点击以后,触发判断密码是否正确,另一个是文本框改变后,触发判断文本长度,以便设置登录按钮是否有效。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值