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

时间:2016-11-23 19:15:40

标签: python tkinter tkinter-canvas

我已经尝试了几种方法来更改此示例代码中蓝色矩形的宽度。似乎没什么用。在代码中," a"表示介于1.00和0.00之间的浮点变量。该值用于计算" b,"这是蓝色矩形的所需宽度(以像素为单位)。我有一些相当复杂的代码生成了这个值,至少它是有效的。为了使代码有效,蓝色矩形的宽度必须依赖于" b。"我已经尝试了#34; 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。我是Stackoverflow社区的新手,所以请告诉我是否可以采取任何措施让我的问题更容易回答。

1 个答案:

答案 0 :(得分:4)

矩形由对角的几个坐标定义。获取左边缘的坐标,将宽度添加到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)