这是一个非常直截了当的问题。
如何知道小部件是否已经显示?有功能吗?
答案 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
信号,以执行只有在实际显示窗口小部件后才能执行的操作,如上例所示。