Как проверить, содержит ли Gtk Constant (GdkWindowState) флаг
Некоторое время я искал, чтобы найти способ проверить, является ли Gtk Constant типа GdkWindowState
содержит флаг
В настоящее время я делаю это:
state=self.window_root.get_window().get_state()
if 'GDK_WINDOW_STATE_FULLSCREEN' in str(state):
...
куда self.window_root
это Gtk.Window
Это мягкий взлом, но я бы хотел сделать это правильно, используя Gdk.WindowState.FULLSCREEN
Я пробовал некоторые вещи, такие как: if Gdk.WindowState.FULLSCREEN in state:
но константа не повторяется. И я хотел бы отметить, что просто используя if Gdk.WindowState.FULLSCREEN == state:
не работает, потому что окно также сфокусировано.
Когда я печатаю state
Я получил:
<flags GDK_WINDOW_STATE_FULLSCREEN | GDK_WINDOW_STATE_FOCUSED of type
GdkWindowState>
Так что я на самом деле вижу, что есть |
оператор, и я думаю, что должно быть возможно сделать что-то с этим. Что-то вроде state.get_flags()
1 ответ
Согласно документации PyGtk, GdkWindowState представляет собой набор битовых флагов. Попробуйте преобразовать его в целочисленное значение и использовать двоичное И:
if Gdk.WindowState.FULLSCREEN & int(state):
# ...
На самом деле вполне возможно, что класс GdkWindowState поддерживает эту операцию напрямую или имеет несколько стандартных методов для преобразования в целое число.
Ты можешь использовать print dir(state)
чтобы увидеть, какие поля и методы доступны, и исследовать оттуда.