如何通过在tkinter中获取比例值来创建矩形?

时间:2016-08-01 17:35:29

标签: python tkinter tkinter-canvas

我想得到一个比例的值并创建与该值一样多的矩形。例如,如果我将比例调整为数字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方法,但我不知道该怎么做。 任何人都可以按照我解释的方式修复我使用的代码。 谢谢。

1 个答案:

答案 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")
    ...