Hallo an alle!
Ich möchte eine Klasse implementieren, die nach dem Stil von z.B. filename=TkFileDialog.asksaveasfilename() etwas zurückgibt.
Also etwas wie:
class MyDialog:
....def __init__(self, parent):
........#hier werden widgets gezeichnet und angeordnet etc...
....def OkGedrueckt(self):
........ergebnis = EntryWidgetForExample.get(...)
........return ergebnis
a = MyDialog(TkRoot) liefert dann natürlich das Toplevel-Widget, Ich will aber danach (wie oben) in a das ergebnis haben.
Gibts da sowas wie ein Schema 'f'?
Für jeden Hinweis dankbar und viele Grüsse, jocsch
Dialog in Tkinter implementieren
Hallo!
Wenn Du auf die Form a = Foo(bar) bestehst, dann am besten alles in einer Funktion kapseln:
Ansonsten, das Modul tkSimpleDialog (bei mir unter Python22\Lib\lib-tk\) bietet einfache Abfragedialoge (askinteger(),askfloat(),askstring()) und eine Dialog-Klasse, die sich sehr gut als Vorlage für eigene Dialoge eignet. Unter http://python.sandtner.net/viewtopic.php?t=442 war das kurz Thema.
Jan
Das übliche Vorgehen wäre, das Ergebnis in eine Membervariable zu packen.jocsch hat geschrieben:Gibts da sowas wie ein Schema 'f'?
Code: Alles auswählen
class MyDialog:
def __init__(self, parent):
#hier werden widgets gezeichnet und angeordnet etc...
def OkGedrueckt(self):
self.ergebnis = EntryWidgetForExample.get(...)
mydialog = MyDialog(TkRoot)
a = mydialog.ergebnis
Code: Alles auswählen
def callMyDialog(parent):
mydialog = MyDialog(parent)
return mydialog.ergebnis
a = callMyDialog(TkRoot)
Jan
-
- User
- Beiträge: 31
- Registriert: Freitag 4. April 2003, 13:09
- Wohnort: Egloffstein (Hundshaupten)
Nochmal Hallo!
Die Idee kam mir auch schon, aber so enthält self.ergebnis immer das, mit dem es in __init__(self) initialisiert wurde. Ich muss das Programm also irgendwie dazu bringen, zwischen mydialog=MyDialog(Tkroot) und a = mydialog.ergebnis quasi auf das drücken von 'Ok' (resp. 'apply') zu 'warten' - da stehe ich eine bisschen auf dem Schlauch.
Igendwelche Ideen?
Danke, jocsch
Die Idee kam mir auch schon, aber so enthält self.ergebnis immer das, mit dem es in __init__(self) initialisiert wurde. Ich muss das Programm also irgendwie dazu bringen, zwischen mydialog=MyDialog(Tkroot) und a = mydialog.ergebnis quasi auf das drücken von 'Ok' (resp. 'apply') zu 'warten' - da stehe ich eine bisschen auf dem Schlauch.
Igendwelche Ideen?
Danke, jocsch
Hallo!
Achso, ich nahm an, das Anzeigen und Beenden des Dialogs würde schon funkionieren und es ginge nur noch um die Rückgabe des Wertes.
Ich will gar nicht viel erklären. Guck Dir stattdessen mal [1] an und frag' dann nochmal bei Unklarheiten.
Jan
[1] http://effbot.org/zone/tkinter-dialog-windows.htm
allg. Einstiegspunkt: http://effbot.org/zone/tkinter-toc.htm
Achso, ich nahm an, das Anzeigen und Beenden des Dialogs würde schon funkionieren und es ginge nur noch um die Rückgabe des Wertes.
Ich will gar nicht viel erklären. Guck Dir stattdessen mal [1] an und frag' dann nochmal bei Unklarheiten.
Jan
[1] http://effbot.org/zone/tkinter-dialog-windows.htm
allg. Einstiegspunkt: http://effbot.org/zone/tkinter-toc.htm