本节介绍一些和窗口交互状态有关的API,具体有:是否可用setEnabled、是否显示setVisible、是否隐藏setHidden、是否编辑setWindowModified、是否为活跃状态isActiveWindow、关闭close这些内容。
是否可用setEnabled
- 设置控件是否可用: setEnabled(bool)
- 查询是否是可用的:isEnabled()
# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
import sys
# 创建一个应用
app = QApplication(sys.argv)
print(sys.argv)
# 创建一个QWidget类的窗口
window = QWidget()
window.setWindowTitle("交互状态") # 标题
window.resize(500, 500) # 窗口的大小
window.move(400, 200) # 窗口初次显示的位置
# 创建其他控件
# 设置不可用
btn = QPushButton(window)
btn.setText("按钮")
btn.pressed.connect(lambda: print("按钮被点击"))
btn.setEnabled(False) # 设置不可用
window.show() # 显示窗口,不然啥也没有
sys.exit(app.exec_())
是否显示/隐藏setVisible
设置控件是否可见:
setVisible(bool)
设置控件是否可见
- setHidden(bool)
- show():展现控件
- hiden() : 隐藏控件
获取控件的显示/隐藏状态:
- isHidden():判断控件是否隐藏,一般是基于父控件的可见
- isVisible():获取控件最终状态是否可见
- isVisibleTo(widget) :如果能随着widget控件的显示和隐藏,同步变化,则返回True
window.setVisible(True)
的效果就是window.show()
,实际上show()和hiden()等函数是setVisible的一个马甲。
需要注意的是,如果父控件没有被展示,那么子控件的setVisible(True)
是无效的。
是否编辑setWindowModified
- setWindowModified(bool) : 被编辑状态,显示 、没被编辑则不显示
- isWindowModified() : 获取窗口是否被编辑状态
这个[*]
可以放在标题里的任何位置。
切记,只能放*符号,放别的不行。
是否为活跃状态isActiveWindow
当有多个窗口时,只会有一个活跃窗口。
在设置窗口的图标setWindowIcon_设置窗口的标题setWindowTitle_不透明度setWindowOpacity_窗口状态setWindowState_最大化showMaximized最小化showMinimized_PyQt学习笔记(二十六)一文中,就介绍了什么是活跃窗口。
关闭控件close
直接把窗口关了。这和隐藏是有点区别的。
关闭则表示这个对象被释放了,而隐藏不会被释放。
Qt.WA_DeleteOnClose
当该窗口接受关闭事件时会让Qt删除该控件。一般和close()配合使用。
btn.setAttribute(Qt.WA_DeleteOnClose, True)
btn.close()