サブウィンドウを開くpygtkを使用してアプリケーションを作成しようとしていますが、このウィンドウの作成/表示および破棄/非表示のプロセスで問題が発生しています。テストとして、1つのボタンでメインウィンドウを開き、クリックすると3つのボタンでサブウィンドウを開く簡単なアプリケーションを作成しました。グレイドを使用してインターフェースを設計しました。私のコードは次のとおりです。
main.py
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」はサブウィンドウを開くメインウィンドウのボタンです。
ここで、「camera」でサブウィンドウを開き、「bt1」で閉じようとすると、問題なく動作します。しかし、「X」ボタンでサブウィンドウを閉じようとすると、次にウィンドウを開くときに、ウィンドウを非表示にするだけにdestroyイベントを変更したにもかかわらず、灰色の空のウィンドウが表示されます。私は何が間違っているのですか?
前もって感謝します!