Seite 1 von 1

Auf Dialog-Rückgabewert warten.

Verfasst: Samstag 20. Oktober 2007, 22:40
von CrackPod
Hallo,

folgende Situation: Ich rufe in meinem Programm einen gtk.Dialog auf(nicht über einen Buttonklick, sprich z.B. einem `clicked' event, sondern direkt aus dem Programm heraus). In diesem Dialog soll etwas eingegeben werden, was ich dann zurückgeben und damit weiterarbeiten will. Allerdings läuft mein Programm heiter weiter, ohne zu warten.
Wie stell ich an das es warten?
LG Tobsl

Verfasst: Sonntag 21. Oktober 2007, 07:30
von Jan-Peer
Moin,

ich denke, das was du suchst ist eine Form des modalen Dialogs mit einer eigenen Mainloop. Schau dir mal den Code im Link an, das sieht prinzipiell ganz vielversprechend aus, auch wenn ich es selber nicht getestet habe:

http://mail.python.org/pipermail/python ... 55995.html

Re: Auf Dialog-Rückgabewert warten.

Verfasst: Sonntag 21. Oktober 2007, 10:05
von gerold
CrackPod hat geschrieben:Allerdings läuft mein Programm heiter weiter, ohne zu warten.
Hallo CrackPod!

Das funktioniert mit der Methode ``run()`` des Dialogs. Damit wird gewartet bis vom Dialog zurück gekehrt wird.

http://www.pygtk.org/docs/pygtk/class-g ... ialog--run

mfg
Gerold
:-)

Verfasst: Sonntag 21. Oktober 2007, 10:19
von CrackPod
Wunderbar :) Genau das was ich gesucht habe. Dankeschön.
Noch eine kleine Frage, kann ich wenn ich response aufrufe, als response_id jeden beliebigen Wert nehmen, oder wird der durch einen generierten überschrieben?
Noch ne andere Frage: wie kann ich denn von einem Dialog etwas zurückgeben lassen? Also, wenn ich den ganzen Dialog in einer Funktion/Methode hab. Z.B.:

Code: Alles auswählen

return_val = popup_dialog()
Geht das so, oder muss ich mir was anderes einfallen lassen?
Edit:
Ich habs in der pygtk Demo gefunden :)
Pseudocode :roll:

Code: Alles auswählen

def popup_dialog():
  dialog = gtk.Dialog('Insert a value', None, 0, (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
  entry = gtk.Entry()
  dialog.vbox.pack_start(entry)
  response = dialog.run()
  if response == gtk.RESPONSE_OK:
    return entry.get_text()
  dialog.destroy()
val = popup_dialog()
LG