在 tkinter 的 canvas 小部件中更改矩形的宽度

Change the width of a rectangle in tkinter's canvas widget

我尝试了多种方法来更改此示例代码中蓝色矩形的宽度。似乎没有任何效果。在代码中,"a" 表示一个介于 1.00 和 0.00 之间的浮点变量。该值用于计算 "b,",这是蓝色矩形的所需宽度(以像素为单位)。我有一些相当复杂的代码可以生成该值,并且至少可以正常工作。为了使代码工作,蓝色矩形的宽度必须依赖于 "b." 我试过 "Canvas.itemconfig()," 但它没有工作。

import tkinter
from tkinter import *

root = Tk()

root.maxsize(320,240)       # Sets max size of window
root.minsize(320,240)

canvas_height = 23
canvas_width = 315

w = Canvas(root, width=canvas_width, height=canvas_height)
w.pack()
w.create_rectangle(5, canvas_height, canvas_width, 2, fill="yellow")
w.create_rectangle(5, canvas_height, canvas_width, 2, fill="blue")

a = 1.0 # More complicated code creates this float between 0.00 and 1.00. It is a percentage of the desired 'blue rectangle' width
b = int(a * canvas_width)

root.mainloop() 

如果有人能提供帮助,我将不胜感激!

P.s。我是 Whosebug 社区的新手,所以请告诉我是否可以做些什么来让我的问题更容易得到解答。

矩形由两个对角坐标定义。获取左边缘的坐标,将宽度添加到 x 坐标,并使用它来设置右边缘的坐标。

首先,跟踪对象 ID,以便稍后更改它:

blue = w.create_rectangle(5, canvas_height, canvas_width, 2, fill="blue")

要调整大小,获取坐标...

x0, y0, x1, y1 = w.coords(blue)

做一些数学...

x1 = x0 + b

并重置坐标

w.coords(blue, x0, y0, x1, y1)