Seite 1 von 1

Dialog in Tkinter implementieren

Verfasst: Sonntag 18. Mai 2003, 22:52
von jocsch
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

Re: Dialog in Tkinter implementieren

Verfasst: Montag 19. Mai 2003, 08:53
von Voges
Hallo!
jocsch hat geschrieben:Gibts da sowas wie ein Schema 'f'?
Das übliche Vorgehen wäre, das Ergebnis in eine Membervariable zu packen.

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
Wenn Du auf die Form a = Foo(bar) bestehst, dann am besten alles in einer Funktion kapseln:

Code: Alles auswählen

def callMyDialog(parent):
	mydialog = MyDialog(parent)
	return mydialog.ergebnis	
a = callMyDialog(TkRoot)
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

Verfasst: Montag 19. Mai 2003, 15:21
von jocsch
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

Verfasst: Montag 19. Mai 2003, 16:24
von Voges
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

Verfasst: Montag 19. Mai 2003, 16:44
von jocsch
Hallo Zurück!
Das funzt einwandfrei - am einfachsten scheint es mir, das ganze von tkSimpleDialog.Dialog abzuleiten, ist mit am wenigsten Tipperei verbunden !!!

Vielen Dank