Seite 1 von 1

Label. Config funktioniert nicht

Verfasst: Dienstag 17. März 2020, 15:58
von Mister
Hi
Ich habe ein Problem dass schon öfter aufgetreten ist aber finde die Ursache nicht. Ich möchte mit einem Button den Inhalt eines Labels ändern aber es geht nicht Der Code:

Code: Alles auswählen

import tkinter as t
def schreibenShell():
    print("text")
def schreibenLabel():
    label.config(text="text")
window=t.Tk()
label=t.Label(window,text="").pack()
button=t.Button(window,text="text in die shell",command=schreibenShell).pack()
buttonn=t.Button(window,text="text ins Label",command=schreibenLabel).pack()
window.mainloop()
Es heisst "none type object has no attribute config"
Warum? Ich dachte man könnte so auf alle widget Objekte zugreifen?
Danke für Antworten

Re: Label. Config funktioniert nicht

Verfasst: Dienstag 17. März 2020, 16:17
von __deets__
Das liegt daran, dass du denkst, pack() wuerde das Widget zurueckliefern. Tut es nicht. Es liefert None. Du musst also die Erzeugung von Buttons und deren packing voneinander trennen.

Re: Label. Config funktioniert nicht

Verfasst: Dienstag 17. März 2020, 16:31
von Mister
Also ich habe das jetzt so:

Code: Alles auswählen

import tkinter as t
def schreibenShell():
    print("text")
def schreibenLabel():
    label.config(text="text")
window=t.Tk()
label=t.Label(window,text="").pack()
button=t.Button(window,text="text in die shell",command=schreibenShell)
buttonn=t.Button(window,text="text ins Label",command=schreibenLabel)
button.pack()
buttonn.pack()
window.mainloop()
Gemacht aber es hat sich nix geändert

Re: Label. Config funktioniert nicht

Verfasst: Dienstag 17. März 2020, 16:32
von Mister
Ach so ich hab vergessen das packing vom Label auch noch extra zu machen, jetzt klappt es.
Danke

Re: Label. Config funktioniert nicht

Verfasst: Dienstag 17. März 2020, 16:37
von Mister
Ich habe aber noch eine Frage: Manchmal definiere ich am Anfang meines Codes eine Funktion und danach eine Fenster mit einem Knopf der diese Funktion aufrufen soll.
Manchmal passiert es aber, dass diese funktion sofort beim Start des Programme ausgeführt wird. Kann jmd sagen warum das so sein kann?

Re: Label. Config funktioniert nicht

Verfasst: Dienstag 17. März 2020, 16:52
von __deets__
Ohne etwas zu sehen kann man das nicht abschliessend beurteilen, aber du machst eh einen Fehler wenn du Code direkt auf Modulebene ausfuehrst. So wie du das eben machst. Das gehoert *ALLES* sauber in Funktionen, und nur gaaaaanz am Ende sollte der Aufruf einer einzigen Funktion stehen, gesichert durch den __main__-Guard.

Code: Alles auswählen

if __name__  == "__main__":
     main()

Re: Label. Config funktioniert nicht

Verfasst: Dienstag 17. März 2020, 17:12
von sparrow
@Mister klingt als würdest du der Funktion die () mitgeben. Dann wird sie ausgeführt und nicht nur der Verweis auf die Funktion.