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
Post a Comment