Обновление размеров прямоугольника tkinter при нажатии кнопки - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу, чтобы мой индикатор выполнения прямоугольника изменял свои размеры при нажатии кнопки, в частности, путем увеличения длины на 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 голосов
/ 07 декабря 2018

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 методе здесь .

...