如何检查Gtk常量(GdkWindowState)是否包含标志

时间:2016-02-04 11:48:24

标签: python gtk3

有一段时间我一直在寻找如何检查GdkWindowState类型的Gtk常量是否包含标志。

我目前正在这样做:

    state=self.window_root.get_window().get_state()

    if 'GDK_WINDOW_STATE_FULLSCREEN' in str(state):
         ...

self.window_rootGtk.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 个答案:

答案 0 :(得分:1)

根据PyGtk documentation,GdkWindowState是一组位标志。尝试将其转换为整数值并使用二进制AND:

public static void main(String[] args) {

        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.yahoo.com");
        driver.manage().window().maximize();

        driver.findElement(By.xpath("//*[text()='Sign In']"))
                .click();
        driver.findElement(By.cssSelector("#login-username"))
                .sendKeys("tester@yahoo.com");
        driver.findElement(By.cssSelector("#login-passwd")).sendKeys("tester1234");
        driver.findElement(By.cssSelector("#login-signin")).click();
    }

实际上,GdkWindowState类很可能直接支持此操作,或者有一些标准方法可以转换为整数。

您可以使用if Gdk.WindowState.FULLSCREEN & int(state): # ... 查看可用的字段和方法,并从那里进行调查。