获取活动的gtk窗口在python中

3 投票
2 回答
5785 浏览
提问于 2025-04-16 06:59

我该怎么在Python中获取当前活动的gtk.Window?(不是我自己创建的窗口,而是现在正在被聚焦的窗口)。

2 个回答

0

[注意:这个回答是针对提问者最初提出的问题,其他读者可能会搜索这个问题,而不是他们在其他回答的评论中更改后的不同问题。]

如果你有一个 GtkApplication,并且已经把你的 GtkWindow 加入到里面——你应该这么做,因为 GtkApplication 可以做很多很酷的事情!——那么你可以使用 GtkApplication 提供的一个更简单的接口来实现这个目的:

Gtk.Application.get_active_window()

这个方法可以获取应用程序的“活动”窗口。

活动窗口是指最近被聚焦的窗口(在这个应用程序内)。如果现在有其他应用程序在使用这个窗口,它可能没有焦点——这里指的只是这个应用程序内最近被聚焦的窗口。

5

其实这个答案并不是特定于某个操作系统的——你可以在GTK中实现这个功能。你可以通过使用 gtk.window_list_toplevels() 来获取应用程序中所有顶层窗口的列表,然后逐个检查,直到找到一个 window.is_active() 返回 True 的窗口。

如果你想考虑其他应用程序的窗口,可以尝试 gtk.gdk.screen_get_default().get_toplevel_windows(),但这只会获取GDK窗口,而不是GTK窗口,因为你无法确定这些GDK窗口是否真的和GTK窗口有关联。

撰写回答