如何测试是否在 windowFlags 中设置了 WindowStaysOnTopHint 标志?

Shu*_*man 6 python flags bit-manipulation pyqt always-on-top

这应该返回一个布尔值吗?

>>> win.windowFlags() & QtCore.Qt.WindowStaysOnTopHint
<PyQt4.QtCore.WindowFlags object at 0x7ad0578>
Run Code Online (Sandbox Code Playgroud)

我已经知道了

# enable always on top
win.windowFlags() | QtCore.Qt.WindowStaysOnTopHint

# disable it
win.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint

# toggle it 
win.windowFlags() ^ QtCore.Qt.WindowStaysOnTopHint
Run Code Online (Sandbox Code Playgroud)

ekh*_*oro 6

WindowFlags对象是来自WindowType枚举的一组 OR'd 标志。该WindowType只是一个子类int,以及WindowFlags对象还支持int操作。

您可以测试是否存在这样的标志:

>>> bool(win.windowFlags() & QtCore.Qt.WindowStaysOnTopHint)
False
Run Code Online (Sandbox Code Playgroud)

或者像这样:

>>> int(win.windowFlags() & QtCore.Qt.WindowStaysOnTopHint) != 0
False
Run Code Online (Sandbox Code Playgroud)

通常,&存在时返回值本身,不存在时返回零:

>>> flags = 1 | 2 | 4
>>> flags
7
>>> flags & 2
2
>>> flags & 8
0
Run Code Online (Sandbox Code Playgroud)