Определять, когда открывается окно в wnck python

#python #gtk #pygobject #wnck

#python #gtk #pygobject #wnck

Вопрос:

Я создаю скрипт для разбиения окна на листы, используя 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.

Ответ №1:

Вот рабочий простой тестовый код. Надеюсь, это поможет вам и это то, что вы хотите.

 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.Ошибка: g-invoke-error-quark: класс WnckScreen не реализует window_opened (1)’ при попытке вызвать его.