showinfo() : alle Meldungen werden beim Programmstart angezeigt?

Fragen zu Tkinter.
Antworten
Tomax
User
Beiträge: 31
Registriert: Sonntag 21. August 2016, 08:05

Hallo zusammen

Ich habe einige Meldungen in mein Programm eingebaut, allerdings immer in unterfunktionen, mit if..else - Bedingungen
Beim Programmstart werden jetzt alle Meldungen hintereinander angezeigt, obwohl die Bedingungen gar nicht erfüllt sind, bzw. die Unterprogramme gar nicht aufgerufen wurden.

Beispiel:

Code: Alles auswählen

def speichern(speicherart):
    if speicherart == "alt":
        tkm.showinfo("Dialog", "speichern")
    else:
        tkm.showinfo("Dialog", "speichern unter..")

eckhard
User
Beiträge: 33
Registriert: Montag 14. Dezember 2015, 10:06
Wohnort: Karlsruhe

Hallo Tomax,
wenn Du nur diese Funktion zeigst, kann Dir wohl niemand helfen.
Du solltest das gesamte Programm oder zumindest die relevanten Teile zeigen.
Eckhard
Sirius3
User
Beiträge: 18294
Registriert: Sonntag 21. Oktober 2012, 17:20

@Tomax: wenn die Meldungen beim Programmstart angezeigt werden, wirst Du die Funktionen wahrscheinlich beim Programmstart auch aufrufen:

Code: Alles auswählen

tk.Button(text="Speichern", command=speichern("alt"))
Das command-Argument erwartet eine Funktion und nicht den Rückgabewert beim Aufruf der Funktion. Bei zusätzlichen Argumenten für die Funktion brauchst Du zudem ›partial‹:

Code: Alles auswählen

from functools import partial

tk.Button(text="Speichern", command=partial(speichern, "alt"))
Antworten