首页 > 解决方案 > NameError:名称“click_entry”未定义(Python)

问题描述

from tkinter import *

class fidgetSpinner:    


    def spin():
        status_str = float(click_entry.get())

    window = Tk() # Create a window
    window.title("11.2 GUI")


    mainframe = Frame(window)
    mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
    mainframe.columnconfigure(0, weight=1)
    mainframe.rowconfigure(0, weight=1)

    click_entry = Entry(mainframe, width=20)
    click_entry.grid(column=2, row=1, sticky=(W, E))

    click = click_entry.get()
    status_str = StringVar()

    Label(mainframe, textvariable=status_str).grid(column=2, row=2, sticky=(W, E))
    Button(mainframe, text="Fidget Click!", command=spin).grid(column=2, row=3, sticky=W)

    Label(mainframe, text="Enter Click Count:").grid(column=1, row=1, sticky=W)
    Label(mainframe, text="status:").grid(column=1, row=2, sticky=E)
    Label(mainframe, text=click).grid(column=2, row=2, sticky=E)

    window.mainloop() # Create an event loop

myWidgets = fidgetSpinner() # Create GUI


myWidgets = fidgetSpinner() # Create GUI

当我运行这个程序并输入一些文本时,当我输入一些数字时

click_entry = Entry(mainframe, width=20)并点击Fidget Click!

它只是说

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/__init__.py", line 1699, in __call__
    return self.func(*args)
  File "/Users/kalib/OneDrive - University of Tasmania/Programming introduction KIT001/11.2dn GUI/11.2dn GUI.py", line 7, in spin
    status_str = float(click_entry.get())
NameError: name 'click_entry' is not defined

此外,我不想制作一个关于指尖陀螺的程序,而这正是我们应该称之为程序的东西。

标签: pythonpython-3.xtkinter

解决方案


请添加这样的额外行它将解决问题

global click_entry # to declare it as a global variable so yoou can access from any where 
click_entry = Entry(mainframe, width=20)
click_entry.grid(column=2, row=1, sticky=(W, E))

这里 click_entry 必须是一个全局变量,并且您正试图在私有变量范围之外访问它


推荐阅读