我想得到一个比例的值并创建与该值一样多的矩形。例如,如果我将比例调整为数字7,则会相互创建7个矩形,之后如果我将比例值调整为3,则画布中显示的矩形在此时减少为3。我使用过以下代码:
from tkinter import *
from tkinter import ttk
class rect:
def __init__(self, root):
self.root = root
self.size = IntVar()
self.canvas = Canvas(self.root, width=800, height=300)
self.scale = Scale(self.root, orient=HORIZONTAL, from_=3, to=20, tickinterval=1, variable=self.size)
self.show()
def show(self):
x = 50
y = 50
for i in range(self.scale.get()):
self.canvas.create_rectangle(x, y, x + 50, y + 50, fill='red')
x += 50
self.canvas.pack()
self.scale.pack()
root = Tk()
a = rect(root)
root.mainloop()
我想我必须使用trace
方法,但我不知道该怎么做。
任何人都可以按照我解释的方式修复我使用的代码。
谢谢。
答案 0 :(得分:0)
一种解决方案是绑定到<ButtonRelease>
,然后在那里调用show
方法。由于事件绑定传递了表示事件的对象,因此如果您还想在不带任何参数的情况下调用show
,则需要将其设为可选参数。
例如:
class rect:
def __init__(self, root):
...
self.scale = Scale(...)
self.scale.bind("<ButtonRelease>", self.show)
我猜你要删除之前绘制的任何矩形,所以在创建矩形之前你需要调用delete
:
def show(...):
self.canvas.delete("all")
...