我有一个看似简单的问题,即获取变量的默认值。当我按下按钮时,我试图在Tkinter Canvas上绘制一个矩形变小。任何帮助理解变量如何工作将不胜感激。我在Python 3.6中工作。 这是一个示例:
from tkinter import *
root=Tk()
bar_var=200
def test_callback():
iteration = 100
for iteration in range(0, iteration):
bar_var -= 1
bar_display.coords('bar', 0, 4, bar_var, 16)
print("bar_var =" + str(bar_var))
bar_display = Canvas(root, height=20, width=200)
bar_display.grid(row=0, column=0)
bar_display.create_rectangle(0, 4, 200, 16, fill='blue', tag='bar')
button = Button(root, text="Resize Bar", command=test_callback)
button.grid(row=1, column=0)
root.mainloop()
我试图改变" bar_var"变量到我发现的一个例子:
bar_var = None
if bar_var():
bar_var = 200
但这似乎抛出异常无对象类型不可调用。任何帮助和解释将不胜感激。谢谢!
答案 0 :(得分:1)
您的变量bar_var
未定义为函数中的局部变量。即使你把一个像bar_var += 2
之类的简单命令放到函数体中,它也会抛出一个错误,因为它不知道你的变量是什么。
克服这个问题的一种方法是在调用按钮函数时引用全局变量,使用,global
:
def test_callback():
global bar_var
iteration = 20
for iteration in range(iteration):
bar_var -= 1
bar_display.coords('bar', 0, 4, bar_var, 16)
print("bar_var =" + str(bar_var))