Python 初学者使用变量更改 Tkinter Canvas 项目

Python Beginner Using Variables to change Tkinter Canvas Items

我遇到了一个看似简单的问题,即要更改变量的默认值。我正在尝试使在 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

但这似乎会引发异常None对象类型不可调用。任何帮助和解释将不胜感激。谢谢!

您的变量 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))