Как проверить, содержит ли 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) чтобы увидеть, какие поля и методы доступны, и исследовать оттуда.

Другие вопросы по тегам