文章目录
- 一、控件交互与状态
- 1. 控件使能状态
- 2. 控件可视化
- 3. 控件的信息提示
- 二、练习:模拟一个密码输入窗口
一、控件交互与状态
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个槽函数,一个是当按键点击以后,触发判断密码是否正确,另一个是文本框改变后,触发判断文本长度,以便设置登录按钮是否有效。