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?

War es hilfreich?

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

  1. Nutzen Sie die run-Methode.
  2. 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top