我想通过单击按钮来更改旋转框的位置和输入字段。 单击按钮触发此错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
return self.func(*args)
File "GUI.py", line 79, in changesite
if (site==0):
NameError: global name 'site' is not defined
我的代码在这里:
else:
w = Spinbox(dialog, from_=5, to=getmodulo(ceiling), increment = 5.0, state='readonly',font = "bold")
e = Entry(dialog,font = "bold")
e.place(x=390,y=120)
w.place(x=20,y=120)
site = 0
def changesite():
global site
if (site==0):
e.destroy()
w.destroy()
ws = Spinbox(dialog, from_=5, to=getmodulo(ceiling), increment = 5.0, state='readonly',font = "bold")
es = Entry(dialog,font = "bold")
es.place(x=20,y=120)
ws.place(x=390,y=120)
site = 1
if (site ==1):
ws.destroy()
es.destroy()
w = Spinbox(dialog, from_=5, to=getmodulo(ceiling), increment = 5.0, state='readonly',font = "bold")
e = Entry(dialog,font = "bold")
e.place(x=390,y=120)
w.place(x=20,y=120)
site = 0
如您所见,我使用global for site,那么如何修复此错误?我不知道该怎么做。 一切顺利;
答案 0 :(得分:0)
这是一种疯狂的猜测,因为你没有向我们展示你的所有代码,但是当" global"时,我可以重现这个问题。变量不是真正的全局变量,而是在封闭函数中定义。
最小例子:
# global f is expected here...
def foo():
f = 42 # ... but defined here
def bar():
global f
f = f + 1 # this causes a NameError
bar()
foo()
相反,您可以使site
成为类的成员(如果有的话),甚至是外部方法的成员(如name_of_outer_method.site
),或者使其成为真正的全局,或者使用可修改的包装类型