Python / GladeでGUIアプリケーションを使用していますが、次の問題があります。[バージョン情報]ダイアログを正しく機能させようとしています...ただし、([バージョン情報]ダイアログで)[閉じる]をクリックしてからもう一度開こうとすると、次のように表示されます。
つまり、ウィンドウのほんの小さな断片と、機能していない閉じるボタンだけです。これは私のGladeウィンドウのクラスです:
# glade object
class MainWindow(object):
builder_ = None
# load main window
def __init__(self):
handler = {
"sigWindowDestroy" : gtk.main_quit,
"sigShowAbout" : self.show_about
}
projfile = "proj.glade"
self.builder_ = gtk.Builder()
self.builder_.add_from_file(projfile)
self.builder_.connect_signals(handler)
window = self.builder_.get_object("main_window")
window.show()
# show about dialog
def show_about(self, *args):
dAbout = self.builder_.get_object("dAbout")
dAbout.run()
dAbout.destroy()
そして私の主な機能では:
# load glade gui
app = MainWindow()
gtk.main()
2回目のクリックで、ターミナルウィンドウに次の出力が表示されます(Mac OS Xを使用)。
GtkWarning: gtk_widget_show: assertion `GTK_IS_WIDGET (widget)' failed
dAbout.run()
GtkWarning: gtk_label_set_markup: assertion `GTK_IS_LABEL (label)' failed
dAbout.run()
編集:申し訳ありませんが、PyGTKに一般的に慣れていないために再開する必要があります。
私は提案されたshow()/hide()
方法の代わりに方法を使用しました。run()/destroy()
今、私はこのチュートリアル(を使用すると言ったrun()/destroy()
)を強調した別のSO投稿をフォローしていて、この動作を確認しています。
まず、閉じるボタンは何もしません。どういうわけか、その動作は事前に定義されていると思いました。次に、コーナーの閉じるボタンでダイアログを閉じると、run()/destroy()
上記と同じ動作が得られます。
編集2:以下を追加することで解決:
dAbout.connect("response", lambda d, r: d.hide())