按下按钮更新tkinter矩形尺寸

时间:2018-12-07 04:44:40

标签: python tkinter tkinter-canvas

我希望矩形进度条在按下按钮时改变其尺寸,特别是将长度增加10。对于tk.Label,我可以使用textvariable,但我不知道如何将类似的东西用于矩形坐标。

import tkinter as tk
from tkinter import ttk

def buttonUpdate(width):
    return width.get()+10

root = tk.Tk()

v=tk.IntVar()
v.set(10)

tk.Button(root, text="+10", command=lambda:v.set(buttonUpdate(v))).grid()
tk.Label(root, textvariable=v).grid()

canvas=tk.Canvas(width=140, height=42)
canvas.grid(row=4, column=0, pady=2)
canvas.create_rectangle(0,0,v.get(),10,)

root.mainloop()

我如何实现这样的目标?

1 个答案:

答案 0 :(得分:0)

canvas.create_rectangle不支持您希望使用的变量,但是我建议您使用trace这样的变量方法来实现所需的功能。

def update_rectangle(canvas, r):
    new = canvas.coords(r)
    new[2] = new[2] + 10
    canvas.coords(r, *new)

r = canvas.create_rectangle(0,0,v.get(),10)
v.trace("w", lambda a,b,c: update_rectangle(canvas, r))

root.mainloop()

您可以详细了解trace方法here