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

时间:2018-02-09 08:07:53

标签: python-3.x tkinter tkinter-canvas

我有一个看似简单的问题,即获取变量的默认值。当我按下按钮时,我试图在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

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

1 个答案:

答案 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))