我有一个应用程序,它每分钟显示一个包含小部件的窗口。如果我通过在窗口管理器 (linux) 中关闭它来销毁此窗口,则会发送销毁信号。然后下一分钟滚动,此时self.window.show_all()
执行,窗口弹出空。
所以我做了一些调查。我print self.window.get_children()
在 show_all 命令之前执行,该命令返回一个空列表。所以我执行了self.vbox.reparent(self.window)
,我得到了这个响应:
calendar.py:237: GtkWarning: IA__gtk_widget_reparent: assertion `widget->parent != NULL' failed
self.vbox.reparent(self.window)
这两种反应似乎相互矛盾。一方面,返回的空列表print self.window.get_children()
似乎暗示窗口没有任何子窗口。另一方面,返回的输出self.vbox.reparent(self.window)
似乎暗示 self.vbox 仍然有一个父级,这将是 self.window (如前所述)
我试过使用弹出窗口:self.window = gtk.Window(gtk.WINDOW_POPUP)
代替,但我希望能够通过窗口管理器关闭窗口,这样我就不必添加额外的按钮来关闭(隐藏)窗口。弹出窗口似乎没有在我的窗口管理器中提供此功能(真棒)。
所以如果你想在它被销毁后重新显示一个顶层窗口及其子窗口,怎么做呢?