今天在写python代码的时候遇到一个问题,我在函数外面定义了一个全局变量onhit判断我是否对按钮进行点击,若点击之后会切换这个按钮的值,但是在函数内部却出现了报错,代码如下
import tkinter as tk
window = tk.Tk()
window.title(“this is a window”)
window.geometry(‘800x800’)
var =tk.StringVar()
l =tk.Label(window,textvariable=var,bg=‘green’,font=(‘Airal’,12),width=15,height=2)
l.pack()
onhit = False
def come_on():
if onhit == False:
var.set('hit me ')
onhit = True
else:
var.set('')
onhit = False
b =tk.Button(window,text=‘come on’,width=15,height = 2,command = come_on)
b.pack()
window.mainloop()
原因就是onhit是全局变量,你在函数内部使用它并且更改它的值的时候需在函数内部重新用global声明一下即加入global onhit 就ok了