如何检查 Gtk 常量 (GdkWindowState) 是否包含标志
How to check if a Gtk Constant (GdkWindowState) contains a flag
一段时间以来,我一直在寻找如何检查 GdkWindowState
类型的 Gtk 常量是否包含标志。
我目前正在这样做:
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:
是行不通的,因为 window 也是重点。
当我打印 state
时,我得到:
<flags GDK_WINDOW_STATE_FULLSCREEN | GDK_WINDOW_STATE_FOCUSED of type
GdkWindowState>
所以我实际上看到有一个 |
运算符,我认为应该可以用它做一些事情。类似于 state.get_flags()
根据PyGtk documentation,GdkWindowState是一组位标志。尝试将其转换为整数值并使用二进制 AND:
if Gdk.WindowState.FULLSCREEN & int(state):
# ...
实际上 GdkWindowState class 很可能直接支持这个操作,或者有一些标准的方法来转换为整数。
您可以使用 print dir(state)
查看可用的字段和方法,并从那里进行调查。
一段时间以来,我一直在寻找如何检查 GdkWindowState
类型的 Gtk 常量是否包含标志。
我目前正在这样做:
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:
是行不通的,因为 window 也是重点。
当我打印 state
时,我得到:
<flags GDK_WINDOW_STATE_FULLSCREEN | GDK_WINDOW_STATE_FOCUSED of type
GdkWindowState>
所以我实际上看到有一个 |
运算符,我认为应该可以用它做一些事情。类似于 state.get_flags()
根据PyGtk documentation,GdkWindowState是一组位标志。尝试将其转换为整数值并使用二进制 AND:
if Gdk.WindowState.FULLSCREEN & int(state):
# ...
实际上 GdkWindowState class 很可能直接支持这个操作,或者有一些标准的方法来转换为整数。
您可以使用 print dir(state)
查看可用的字段和方法,并从那里进行调查。