#提问在注释里
import tkinter as tk
from tkinter import messagebox
def count():
global counter#这里为什么要定义global
counter += 1
def show():
messagebox.showinfo("","counter=" + str(counter) + ",state=" + str(switch.get()))#这里为什么不先定义global switch和global counter
window = tk.Tk()
switch = tk.IntVar()
counter = 0
button = tk.Button(window, text="Show", command=show)
button.pack()
checkbutton = tk.Checkbutton(window, text="Tick", variable=switch, command=count)
checkbutton.pack()
window.mainloop()
```
如果要修改全局变量
counter,需要先用global引入这个变量,要不counter被当做函数内的局部变量
,counter+=1会报错,因为没定义
仅访问
的话则不需要用global引入,会先查找函数内是否存在这个变量,存在则引用函数内的这个变量(注意要在引用前赋值,要不会报错)。如果不存在则检查全局变量是否存在,不存在就会报错
global是Python中的全局变量关键字, 是用来修改全局变量的,如果函数内不涉及到修改那么不用加
你的代码 show()函数并没有修改counter所以不用加,而count()函数修改了全局变量counter,所以要加