如何检测是否显示Gtk小部件

时间:2013-11-17 13:20:08

标签: python widget gtk

这是一个非常直截了当的问题。

如何知道小部件是否已经显示?有功能吗?

2 个答案:

答案 0 :(得分:4)

您可以使用此选项检查窗口是否可见 -

if mywindow.props.visible: pass # do stuff here

答案 1 :(得分:4)

visible上的GtkWidget属性只会告诉您窗口小部件是否应“出现”。它并没有告诉你它是否真的存在。

这很重要,因为当你第一次创建一个小部件时,它实际上不会显示,直到GTK重新进入主循环。在显示之前,尚未发生大小协商等事情,并且尚未分配后端存储(GDK资源等)。例如,在Python中:

Gtk.Window w
w.show_all() # sets "visible" property to True
alloc = w.get_allocation() # Error -- size hasn't been allocated yet!
gdk_window = w.get_window() # Error -- no GDK window yet!

要确定是否实际显示了窗口小部件,您需要使用realized属性。您可以连接到realize信号,以执行只有在实际显示窗口小部件后才能执行的操作,如上例所示。