PyQt6如何设置窗口Flags?调用QtCore.Qt.Window报属性错误如何解决?
报错原因与修复方案
1. 枚举属性错误的原因
你使用的是PyQt6版本,该版本对Qt枚举体系做了重构,原PyQt5中直接挂载在QtCore.Qt下的窗口类型枚举,全部迁移到了QtCore.Qt.WindowType子枚举类下,所以QtCore.Qt.Window、QtCore.Qt.CustomizeWindowHint这类旧写法会触发属性不存在的错误。
2. 调用对象错误
要实现主窗口始终置顶的效果,应该给**主窗口对象MainWindow**设置窗口标志,而不是给它的子部件中心控件centralwidget设置,给子部件设置窗口标志无法作用于主窗口。
修复代码
找到你代码中标注的错误行,直接删除该行,替换为如下代码即可:
# 保留窗口原有属性的基础上追加始终置顶标记,不会破坏默认的标题栏、缩放等功能 MainWindow.setWindowFlags(MainWindow.windowFlags() | QtCore.Qt.WindowType.WindowStaysOnTopHint)
如果你确实需要自定义窗口样式,可以加上对应的枚举:
MainWindow.setWindowFlags(QtCore.Qt.WindowType.Window | QtCore.Qt.WindowType.CustomizeWindowHint | QtCore.Qt.WindowType.WindowStaysOnTopHint)
内容的提问来源于stack exchange,提问作者David Carter
相关产品推荐
相关产品推荐

