如何获得Gtkwindow而不是GdkWindow

如何获得Gtkwindow而不是GdkWindow,gtk,pygtk,Gtk,Pygtk,我想获得gdkwindow,我知道有方法列出桌面上打开的所有gdk窗口,但是如何获得GtkWindow? 我知道GtkWindow有一个属性gdkwindow,但是如何通过gdkwindow获得GtkWindow?没有更多的上下文,我无法更好地回答您的问题,但请尝试使用。它将返回当前进程的所有顶级GTK窗口的列表 下面是如何设计一种方法来返回相应的顶级 来自GDK窗口XID的GTK窗口 def find_gtk_窗口(xid): 对于gtk中的gtk_窗口。窗口列表_顶级(): 如果gtk_wi

我想获得gdkwindow,我知道有方法列出桌面上打开的所有gdk窗口,但是如何获得GtkWindow?
我知道GtkWindow有一个属性gdkwindow,但是如何通过gdkwindow获得GtkWindow?

没有更多的上下文,我无法更好地回答您的问题,但请尝试使用。它将返回当前进程的所有顶级GTK窗口的列表

下面是如何设计一种方法来返回相应的顶级 来自GDK窗口XID的GTK窗口

def find_gtk_窗口(xid):
对于gtk中的gtk_窗口。窗口列表_顶级():
如果gtk_window.window.xid==xid:
返回gtk_窗口

但是,如果您想列出其他进程的所有GTK窗口,那么这(很容易)是不可能的。对的回答很好地描述了这种情况。

你能解释一下你想要完成什么,以及如果有任何其他数据/小部件可供使用怎么办?@cpburnz如何通过gdkwindow xid获得gtkwindow实例?我有一个问题。运行window1时,我会打开一个文件对话框。为什么除了先关闭文件对话框,我不能直接关闭window1。但在其他应用程序中,可以先关闭旧窗口。原因是什么,例如GtkFileChooserButton和GtkFileChooserDialog.GtkFileChooserButton(可以先关闭旧窗口)和GtkFileChooserDialog(不能也应该先关闭对话框)。这里的代码是@user3085513,它应该作为一个单独的问题发布,但这必须与。如果您想在不关闭对话框的情况下返回父窗口,请确保取消设置可以使用的
GTK_dialog_MODAL
标志。@user3085513此帖子是否回答了您的原始问题?正如答案所示,您无法从其他进程获取GtkWindows。GtkParasite之所以有效,是因为它是一个动态加载到您正在检查的流程中的模块,因此它使用
gtk_window_list_toplevels()
获取当前流程的窗口。