Frage zu tkSimpleDialog.Dialog

Fragen zu Tkinter.
jocsch
User
Beiträge: 31
Registriert: Freitag 4. April 2003, 13:09
Wohnort: Egloffstein (Hundshaupten)

Frage zu tkSimpleDialog.Dialog

Beitragvon jocsch » Mittwoch 3. September 2003, 23:06

Hallo zusammen!
Schon wieder eine Frage zu Tkinter: Ich möchte einen Dialog erzeugen, dem ich irgendeinen Parameter übergebe, der den Inhalt der Dialogbox steuert (z.B. den Text eines Labels oder sowas). Bin ich da mit einem von der tkSimpleDialog.Dialog - Klasse abgeleiteten Dialog richtig?
Sowas wie ...

Code: Alles auswählen

class askMeForSomething(tkSimpleDialog.Dialog):
      def body(self, master, someParameter):
            Label(master, text = str(someParameter)).grid(row = 0, colum = 0)
            (...)

... geht nämlich nicht.

Danke wie immer für jede Anregung,

Jochen
xturbo77
User
Beiträge: 39
Registriert: Montag 9. September 2002, 20:05
Kontaktdaten:

Beitragvon xturbo77 » Donnerstag 4. September 2003, 08:35

Code: Alles auswählen

import tkMessageBox


def showMessage(titel, inhalt):
    tkMessageBox.showinfo(titel,inhalt)


#Testaufruf
showMessage("Hallo", "Nur ein Test")


Also das wäre wahrscheinlich die simpelste Lösung. Das geht natürlich auch objektorientiert, aber ableiten musst du da eigentlich nix, es sei denn du willst die Klasse tkMessageBox erweitern.
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Re: Frage zu tkSimpleDialog.Dialog

Beitragvon Voges » Donnerstag 4. September 2003, 08:46

Hallo!
jocsch hat geschrieben:... geht nämlich nicht.

body() rufst Du selbst nie auf, sondern das macht der Konstruktor der Dialog-Klasse. Was vielleicht irretiert, ist dass bereits der Aufruf des Konstruktors nicht nur die Instanz erzeugt, sondern auch gleich den Dialog erscheinen lässt.
Lösung: Du überschreibt den Konstruktor mit einer eigenen Version mit zusätzlichem Parameter und speicherst den Parameter in einer Membervariablen:

Code: Alles auswählen

class askMeForSomething(tkSimpleDialog.Dialog):
      def __init__(self,master,someParameter):
            self.someParameter = someParameter
            Dialog.__init__(self,master)
     
      def body(self, master):
            Label(master, text = str(self.someParameter)).grid(row = 0, colum = 0)
            (...)
# Aufruf:
myDialog = askMeForSomething(root,"der Paramter")

hth
Jan

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder