Lichtung aboutDialog nicht schließen
Frage
Ich habe eine AboutDialog
Box in Lichtung gemacht, aber die Schließen-Schaltfläche funktioniert nicht. Ich weiß nicht, wie diese Schaltfläche, um eine separate Funktion zu verbinden, da es in einem Widget namens dialog-action_area
sitzt.
Ein weiteres Problem ist, wenn ich die Schaltfläche zum Schließen des Fenster-Manager erstellt verwenden, kann ich es nicht wieder öffnen, weil es zerstört wurde.
Wie kann ich das so ändern sie nur versteckt?
Lösung
Sie müssen das Widget-hide () Methode aufrufen, wenn Sie Signale empfangen löschen oder abbrechen:
response = self.wTree.get_widget("aboutdialog1").run() # or however you run it
if response == gtk.RESPONSE_DELETE_EVENT or response == gtk.RESPONSE_CANCEL:
self.wTree.get_widget("aboutdialog1").hide()
Sie können den Antworttyp Konstanten finden in die GTK Dokumentation
Andere Tipps
Wie jedes Dialogfenster, die sie benötigen Sie
- Nutzen Sie die run-Methode.
- Nutzen Sie die "reponse" Signal
Die erste wird die Hauptschleife blockieren und wird zurückkehren, sobald der Dialog eine Antwort erhält, kann dies im Aktionsbereich oder drücken Sie Esc auf eine beliebige Taste sein, klicken Sie auf, oder die Antwort-Methode des Dialog aufrufen oder „zerstören“ das Fenster , die letzten nicht bedeuten, dass das Fenster zerstört werden wil, bedeutet dies, dass die Methode run () beendet und eine Antwort zurück. wie folgt aus:
response = dialog.run()
Wenn Sie einen Debugger verwenden, werden Sie feststellen, dass die Hauptschleife bleibt dort, bis Sie auf eine Schaltfläche klicken oder versuchen, den Dialog zu schließen. Sobald Sie yout Antwort erhalten haben, dann können Sie USEIT wie Sie wollen.
response = dialog.run()
if response == gtk.RESPONSE_OK:
#do something here if the user hit the OK button
dialog.destroy()
Die zweite ermöglicht es Ihnen, den Dialog in einer nicht-blockierende Material verwenden, dann müssen Sie Ihren Dialog auf die „Antwort“ Signal angeschlossen werden.
def do_response(dialog, response):
if response == gtk.RESPONSE_OK:
#do something here if the user hit the OK button
dialog.destroy()
dialog.connect('response', do_response)
Nun, Sie feststellen, dass Sie Ihren Dialog zerstören