x.config funktioniert nicht

Fragen zu Tkinter.
Antworten
lordzwieback
User
Beiträge: 55
Registriert: Montag 2. März 2015, 14:35
Kontaktdaten:

Montag 18. April 2016, 11:53

Guten Morgen,

ich möchte mir TKinter etwas genauer anschauen. Dazu habe ich im Netz diese Seite gefunden:
http://www.python-kurs.eu/tkinter_labels.php

In diesem Abschnitt geht es um Labels. Weiter unten unter der Überschrift "Dynamischer Inhalt in einem Label-Widget" gibt es ein kleines Beispiel mit einem Counter. In diesem Beispiel gibt es einen Befehl (in Funktion "counter_label"), welcher bei meinem MacBook nicht funktioniert. Bei Windows funktioniert er problemlos. Bei beiden Betriebssystemen habe ich es nochmal per Copy&Paste versucht, um Tippfehler auszuschließen.

Die besagte Zeile lautet: label.config(text=str(counter))

Beim Mac bekomme ich die Meldung, dass .config nicht in der Bibliothek vorhanden wäre.

Weiß hier jemand weiter ?

Grüße,
lordzwieback
BlackJack

Montag 18. April 2016, 12:30

@lordzwieback: Zeig mal bitte den kompletten Quelltext der diesen Fehler zur Folge hat und auch den kompletten Traceback dazu. Das sollte nicht passieren.

Allerdings ist der Quelltext auf der verlinkten Seite nicht wirklich schön mit dem ``global``.
eckhard
User
Beiträge: 30
Registriert: Montag 14. Dezember 2015, 10:06
Wohnort: Karlsruhe

Montag 18. April 2016, 12:54

@lordzwieback: Steht vor config vielleicht ein Komma statt einem Punkt?
Ein solcher Tippfehler ist mir schon oft passiert.

eckhard
lordzwieback
User
Beiträge: 55
Registriert: Montag 2. März 2015, 14:35
Kontaktdaten:

Montag 18. April 2016, 20:13

Hey, sorry das ich jetzt erst antworte, bin eben erst heimgekommen.

Der komplette Code:

Code: Alles auswählen

from tkinter import *

counter = 0

def counter_label(label):
    def count():
        global counter
        counter += 1
        label.config(text=str(counter))
        label.after(1000, count)
    count()

root = Tk()
root.title("Counting seconds")
label = Label(root, fg="green").pack()
counter_label(label)
button = Button(root, text="stop", width=25, command=root.destroy()).pack()

root.mainloop()

Und der Traceback dazu:

Code: Alles auswählen

/Library/Frameworks/Python.framework/Versions/3.4/bin/python3.4 /Users/***/PycharmProjects/tkinter/count_seconds.py
Traceback (most recent call last):
  File "/Users/***/PycharmProjects/tkinter/count_seconds.py", line 16, in <module>
    counter_label(label)
  File "/Users/***/PycharmProjects/tkinter/count_seconds.py", line 11, in counter_label
    count()
  File "/Users/***/PycharmProjects/tkinter/count_seconds.py", line 9, in count
    label.config(text=str(counter))
AttributeError: 'NoneType' object has no attribute 'config'

Process finished with exit code 1
Sorry falsch ich den Traceback falsch interpretiert hab.
BlackJack

Montag 18. April 2016, 20:38

@lordzwieback: Der Code würde unter Windows die gleiche Ausnahme zur Folge haben. Lass Dir `label` mal ausgeben und wenn Du schon dabei bist auch `button`. Und dann schau Dir den Unterschied zu der verlinkten Webseite an und was *dort* an die Namen gebunden wird.
lordzwieback
User
Beiträge: 55
Registriert: Montag 2. März 2015, 14:35
Kontaktdaten:

Montag 18. April 2016, 20:55

Alles klar, hab die Fehler gefunden, danke. War wohl blind vom vielen Draufglotzen..
Antworten