如何通过在 tkinter 中获取当时的比例值来创建矩形?
how to create rectangles by getting scale values at the time in tkinter?
我想获取比例尺的值并创建与该值一样多的矩形。例如,如果我将比例调整为数字 7,则会创建 7 个彼此相邻的矩形,之后如果我将比例值调整为 3,则 canvas 中显示的矩形此时会减少到三个.我使用了下面的代码:
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
方法,但我不知道该怎么做。
谁能按照我解释的方式修复我使用的代码。
谢谢。
一种解决方案是绑定到 <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")
...
我想获取比例尺的值并创建与该值一样多的矩形。例如,如果我将比例调整为数字 7,则会创建 7 个彼此相邻的矩形,之后如果我将比例值调整为 3,则 canvas 中显示的矩形此时会减少到三个.我使用了下面的代码:
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
方法,但我不知道该怎么做。
谁能按照我解释的方式修复我使用的代码。
谢谢。
一种解决方案是绑定到 <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")
...