python - how to create rectangles by getting scale values at the time in tkinter? -


i want value of scale , create rectangles many value is. example, if adjust scale number 7, 7 rectangles created next each other, , after if adjust scale value 3, rectangles shown in canvas decreases 3 @ moment. had used code below:

from tkinter import * 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         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() = rect(root) root.mainloop() 

i guess have use trace method, don't know how to. can fix code used in way explained. thank you.

one solution bind <buttonrelease>, , call show method there. since event bindings pass object representing event, you'll need make optional argument if want call show without arguments.

for example:

class rect:     def __init__(self, root):         ...         self.scale = scale(...)         self.scale.bind("<buttonrelease>", self.show) 

i'm guessing you'll want remove drawn rectangles, you'll need call delete before creating rectangles:

def show(...):     self.canvas.delete("all")     ... 

Comments