2016-10-12 13 views
1

Должен ли он возвращать логическое значение?Как проверить, установлен ли флаг WindowStaysOnTopHint в windowFlags?

>>> win.windowFlags() & QtCore.Qt.WindowStaysOnTopHint 
<PyQt4.QtCore.WindowFlags object at 0x7ad0578> 

Я уже знал, что

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

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

# toggle it 
win.windowFlags()^QtCore.Qt.WindowStaysOnTopHint 

ответ

1

Объект WindowFlags является соединены через набор флагов из WindowType перечисления. WindowType является просто подклассом int, а объект WindowFlags также поддерживает операции int.

Вы можете проверить на наличие флага, например так:

>>> bool(win.windowFlags() & QtCore.Qt.WindowStaysOnTopHint) 
False 

или, например так:

>>> int(win.windowFlags() & QtCore.Qt.WindowStaysOnTopHint) != 0 
False 

В общем, & возвращает сам, когда присутствует значение, или ноль, когда отсутствует:

>>> flags = 1 | 2 | 4 
>>> flags 
7 
>>> flags & 2 
2 
>>> flags & 8 
0