1、假设某一时刻桌面有多个用户窗口,但能与用户进行交互的有且只有一个。
判断窗口是否处于活跃状态。并不一定是谁在前边谁就是活跃窗口(window.rise_可以使窗口放置在前边,谁的周边有光圈谁就是活跃窗口)
print(w2.isActiveWindow())
2、关闭操作:一般情况下关闭操作就是调用上一节的隐藏方法(setVisible()方法)。
隐藏一个按钮:btn.setVisible(False),btn.setHidden(True),btn,hide(),btn.close()。窗口被隐藏了并没有被释放。
加入参数:关闭的同时并删除按钮控件。
setAttribute(Qt.WA_DeleteOnClose,True)
(按钮被隐藏)
btn.close()
# 两者必须结合使用,才能隐藏控件并释放
3、案例:
默认状态:标签隐藏、文本框和按钮显示,按钮设置为不可用状态;当文本框有内容时,让按钮可用,否则不可用;当文本框内容为sz时,点击按钮则显示标签,并展示文本为登录成功,否则为失败。
涉及到的知识点:文本框的创建(QLineEdit类,文本框检测内容变更(textChanged),文本框内容获取text方法),按钮状态的设置。
①当文本框有内容时,让按钮可用,否则不可用;(监听内容变更textChanged信号)
②当文本框内容为sz时,点击按钮则显示标签,并展示文本为登录成功,否则为失败。监听按钮点击事件。
from PyQt5.Qt import *
import sys
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):
print("文本内容发生了改变", text)
# if len(text) > 0:
# btn.setEnabled(True)
# else:
# btn.setEnabled(False)
btn.setEnabled(len(text) > 0)
def check():
# 获取文本框内容
content = le.text()
# 判断是否是Sz
if content == "Sz":
label.setText("登录成功")
# 是,显示之前隐藏的提示标签,展示文本
else:
label.setText("登录失败")
label.show()
label.adjustSize()
le.textChanged.connect(text_cao)
btn.pressed.connect(check)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())