Glade を使用して、ダイアログ ボックス付きの Python GUI を作成しています。
Glade を使用していなければ、クラスを使用してダイアログ ウィンドウを作成し (dialog)、それを実行し (dialog.run)、実行することをすべて実行してから削除します (dialog.destroy)。ダイアログボックスが再び必要になったときに、インスタンスを再作成します。
Gladeはこれにモンキーレンチを入れます。Gtk.Builder を呼び出した後、次のようなオブジェクトを取得できます。
dialog = builder.get_object("dialog")
response = dialog.run()
#do stuff
dialog.destroy()
メモリから削除するため、実行、使用、破棄の方法を好みます。
ただし、Glade を使用すると、上記の操作を行った後、呼び出しが破棄されているため、2 回目に動作させることができず、Glade に再インスタンス化させる方法がわかりません。
私が書いた過去のプログラムでは、これを行いました:
dialog = builder.get_object('dialog')
response = dialog.run()
# use it
dialog.hide()
再び必要になったときは、次のようにします。
dialog.show()
response = dialog.run()
# do stuff
dialog.hide()
この制限を回避するためですが、私はこの方法に満足していません。これはちょっとしたハックのように感じます (Glade では、とにかく最初からすべてが作成されていると思います)。このすべての表示と非表示を行うのではなく、Glade ライブラリでダイアログ ボックスを再インスタンス化する方法はありますか?
ありがとう、
ナルニー