本节介绍一些和窗口交互状态有关的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()

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

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