我正在尝试使用 pygtk 创建一个打开子窗口的应用程序,但是我在此窗口的创建/显示和销毁/隐藏过程中遇到了一些问题。作为测试,我制作了一个简单的应用程序,它打开一个带有一个按钮的主窗口,单击该按钮时,会打开一个带有三个按钮的子窗口。我用glade来设计界面。我的代码如下:
主文件
import gobject
import pygtk
import gtk.gtkgl
import gtk.glade
from interface import *
if __name__ == "__main__":
gtk.gdk.threads_init()
settings = gtk.settings_get_default()
settings.props.gtk_button_images = True
intf = interface()
gtk.main()
和 interface.py
import pygtk
import gtk.gtkgl
import gtk.glade
class interface(object):
def __init__(self):
self.builder = gtk.Builder()
self.builder.add_from_file("web-interface.glade")
self.main_window = self.builder.get_object("main_window")
self.camera_window = self.builder.get_object("cam_window")
self.main_window.show()
self.builder.connect_signals(self)
def on_main_window_destroy(self, widget):
gtk.main_quit()
def on_camera_clicked(self, widget):
self.camera_window.show()
def on_bt1_clicked(self, widget):
self.camera_window.hide()
def on_cam_window_destroy(self, widget):
self.camera_window.hide()
return
其中'bt1'是camera_window上的一个按钮来隐藏它,'camera'是主窗口上的一个按钮,它可以打开子窗口。
现在,当我尝试用“相机”打开子窗口并用“bt1”关闭它时,它工作得很好。但是,如果我尝试使用“X”按钮关闭子窗口,下次打开它时,我会得到一个灰色的空窗口,即使我将销毁事件更改为仅隐藏窗口。我究竟做错了什么?
提前致谢!