2016-09-23 3 views
-2

Ich habe mir die vorhandenen Fragen angesehen, aber bisher konnte ich keine Lösung finden.'NoneType' Objekt hat kein Attribut '__getitem__' - Tkinter

Ich bin neu in der Python-Programmiersprache und habe angefangen, mit Tk herumzuspielen, bekomme aber immer die folgende Fehlermeldung, wenn ich versuche, einen Wert von einem Kontrollkästchen zu bekommen oder einen Wert eines Labels zu ändern:

‚NoneType‘ Objekt hat kein Attribut ‚getitem

im Folgenden ein Beispiel für meinen Code, in dem ich die Fehlermeldung, wenn eine Taste

from Tkinter import * 

the_window = Tk() 

the_window.title('Button Change Colour') 

def change_to_red(): 
    colour_area['text']='Red' 

colour_area = Label(the_window, bg='Grey', text = 'test', width = 40, height = 5).grid(row = 1, column = 1, padx = 5, pady = 5) 
red_button = Button(the_window, text='Red', width = 5, command = change_to_red).grid(row = 2, column = 1) 

the_window.mainloop() 

ich bin sicher, es ist klicken etwas kleines/dummes, aber würde deine Hilfe dennoch schätzen! :)

+0

@AndrewL. Yeah, du hast natürlich recht, ^^ das ist der kanonische Link. –

Antwort

1

Es klingt verwirrend, aber Sie hatten colour_area nicht als ein Label deklariert, Sie haben es nur zum Raster hinzugefügt.
hier ist Ihr Fehler:

from Tkinter import * 

the_window = Tk() 

the_window.title('Button Change Colour') 

def change_to_red(): 
    colour_area['text']='Red' 

# initializing colour_area as a Tk.Label 
colour_area = Label(the_window, bg='Grey', text = 'test', width = 40, height = 5) 
# adding it to the grid 
colour_area.grid(row = 1, column = 1, padx = 5, pady = 5) 
red_button = Button(the_window, text='Red', width = 5, command = change_to_red).grid(row = 2, column = 1) 

the_window.mainloop() 

Dies wird ordnungsgemäß funktionieren.

+0

Das funktioniert perfekt! Vielen Dank! Also, alle meine Probleme werden verursacht, weil ich versuche, alles in einem Rutsch zu packen/grid. Macht Sinn! –

+0

@DominicFichera Sie können es sehr gut einmal machen, aber * nicht *, wenn Sie später auf das Widget zugreifen, es konfigurieren oder abrufen müssen. –

Verwandte Themen