2016-06-17 4 views
-3

Die zu realisierende Funktion ist: Wenn Sie auf die Schaltfläche Tkinter klicken, wird der Text eines Eintrags geändert. Hier ist der Code-Schnipsel:den Text des Tkinter-Eintrags ändern, wenn Sie auf die Schaltfläche klicken

import Tkinter as tk 

def create_heatmap_button_callback(): 
    path_entry.delete(0, tk.END) 
    path_entry.insert(0, "clicked!")  

def main(): 
    root = tk.Tk() 
    path_entry = tk.Entry(master = root, text = "not clicked") 
    path_entry.grid(row=1, column=0, sticky = tk.W) 

    create_heatmap_button = tk.Button(master = root, text = "create map", command = create_heatmap_button_callback) 
    create_heatmap_button.grid(row=2,column=0,sticky = tk.W) 

    tk.mainloop() 

if __name__ == "__main__": 
    global path_entry 
    main() 

und wenn auf die Schaltfläche geklickt wird, ist hier die Ausgabe:

Nameerror: global name ‚path_entry‘ ist nicht

definiert Was ist der richtige Weg, dies zu tun?

+0

Wie importieren Sie Tkinter? – Li357

+1

Ich gehe davon aus, dass dies nicht der Code auf Modulebene ist, sonst ist 'path_entry' sehr global klar definiert und der Code, den Sie haben, würde korrekt funktionieren. Bitte zeigen Sie das Code-Snippet im Kontext an. –

+1

Wenn ich Ihren Code ausführen, bekomme ich 'Name 'tk' ist nicht definiert ', nicht' globalen Namen 'path_entry' ist nicht definiert. Bitte geben Sie eine [mcve] an, die Ihr Problem veranschaulicht. – Kevin

Antwort

1

Ich habe möglicherweise den Fehler gefunden, der path_entry muss als global deklariert werden.Pythons globale Variable Verhalten unterscheidet sich von anderen Sprachen.

import Tkinter as tk 

def create_heatmap_button_callback(): 
    #global path_entry 
    path_entry.delete(0, tk.END) 
    path_entry.insert(0, "clicked!") 

def main():  
    root = tk.Tk() 
    global path_entry 
    path_entry = tk.Entry(master = root, text = "not clicked") 
    path_entry.grid(row=1, column=0, sticky = tk.W) 

    create_heatmap_button = tk.Button(master = root, text = "create map", command = create_heatmap_button_callback) 
    create_heatmap_button.grid(row=2,column=0,sticky = tk.W) 

    tk.mainloop() 

if __name__ == "__main__": 

    main()