首页 > 解决方案 > 检测何时在 wnck python 中打开一个窗口

问题描述

我正在使用 libwnck 制作一个窗口平铺脚本。我想检测用户何时打开新窗口以调整其大小。到目前为止,这是我的代码的要点:

import gi

gi.require_version("Wnck", "3.0")
from gi.repository import Wnck

screen = Wnck.Screen.get_default()
screen.force_update()

# Here I resize all windows in the current workspace using
# window.set_geometry

# The script ends here however I'd like it to continue forever
# and detect a "window opened event"

从文档来看,似乎有一些虚拟方法,do_window_opened但我不知道如何让它在 python 中工作。

标签: pythongtkpygobjectwnck

解决方案


这是一个工作简单的测试代码。希望它可以帮助你,是你想要的。

import gi

gi.require_version('Wnck', '3.0')
gi.require_version('Gtk', '3.0')

from gi.repository import Wnck
from gi.repository import Gtk


def test_do_when_window_opened_simple():
    Gtk.init([])
    screen: Wnck.Screen = Wnck.Screen.get_default()
    screen.force_update()

    def do_window_opened(this_screen: Wnck.Screen, opened_window: Wnck.Window):
        print('hello')
        app: Wnck.Application = opened_window.get_application()
        app_name = app.get_name()
        print('app name -> ' + app_name)
        print('window name -> ' + opened_window.get_name())

    screen.connect('window-opened', do_window_opened)

    Gtk.main()


if __name__ == '__main__':
    test_do_when_window_opened_simple()

也可以看看:

请检查此链接的第一条评论

请检查此链接的示例,虽然它是用 C 编写的

注意:Wnck.Screen 对象有一个名为“do_window_opened”的函数,但它没有实现。我在尝试调用它时收到错误消息“gi.repository.GLib.GError: g-invoke-error-quark: Class WnckScreen does not implement window_opened (1)”。


推荐阅读