python - 检测何时在 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 中工作。
解决方案
这是一个工作简单的测试代码。希望它可以帮助你,是你想要的。
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()
也可以看看:
注意:Wnck.Screen 对象有一个名为“do_window_opened”的函数,但它没有实现。我在尝试调用它时收到错误消息“gi.repository.GLib.GError: g-invoke-error-quark: Class WnckScreen does not implement window_opened (1)”。
推荐阅读
- ios - 为什么tableview中的数据总是随机排序的?
- python - 无法腌制“dict_keys”对象 - 带有键规则的 dict 验证器
- mysql - Sql 查询交叉变换或透视?
- python - 使用 BeautifulSoup 进行抓取,值不干净
- python - 在元素个数为偶数的情况下不除以两个元素之和的中位数
- pandas - Groupby 转换到 Pandas 中的列表不起作用
- uuid - UUID 在 Minecraft bungeeCord 网络中为同一个人以不同方式保存
- reactjs - 如何避免 React Hooks 的重新渲染
- java - 我想替换java段落中的整个单词,但它也在替换匹配的字符。不知道该怎么做
- javascript - SyntaxError: 预期的表达式,得到 '&' (Django)