tkiner主窗口输入数量和长宽、间隔;子窗口根据数量生成矩形,并且每个矩形之间的距离等于间隔
时间: 2024-03-20 22:41:36 浏览: 19
好的,我可以为您提供一个更新后的示例来满足您的需求,演示如何使用tkinter创建一个主窗口和一个子窗口,并在子窗口中根据用户输入的数量生成相应数量的矩形,同时在矩形之间添加指定的间隔。
```python
import tkinter as tk
class MainWindow(tk.Tk):
def __init__(self):
super().__init__()
self.title("主窗口")
self.geometry("300x250")
self.label1 = tk.Label(self, text="请输入矩形数量:")
self.label1.pack()
self.entry1 = tk.Entry(self)
self.entry1.pack()
self.label2 = tk.Label(self, text="请输入矩形宽度:")
self.label2.pack()
self.entry2 = tk.Entry(self)
self.entry2.pack()
self.label3 = tk.Label(self, text="请输入矩形高度:")
self.label3.pack()
self.entry3 = tk.Entry(self)
self.entry3.pack()
self.label4 = tk.Label(self, text="请输入矩形间距:")
self.label4.pack()
self.entry4 = tk.Entry(self)
self.entry4.pack()
self.button = tk.Button(self, text="生成矩形", command=self.create_rectangles)
self.button.pack()
def create_rectangles(self):
num_rectangles = int(self.entry1.get())
width = int(self.entry2.get())
height = int(self.entry3.get())
spacing = int(self.entry4.get())
ChildWindow(num_rectangles, width, height, spacing)
class ChildWindow(tk.Toplevel):
def __init__(self, num_rectangles, width, height, spacing):
super().__init__()
self.title("子窗口")
self.geometry("{}x{}".format(num_rectangles * (width + spacing), height + 2*spacing))
for i in range(num_rectangles):
x1 = i * (width + spacing) + spacing
y1 = spacing
x2 = x1 + width
y2 = y1 + height
self.canvas = tk.Canvas(self, width=width, height=height)
self.canvas.create_rectangle(0, 0, width, height, fill="blue")
self.canvas.place(x=x1, y=y1)
if __name__ == "__main__":
app = MainWindow()
app.mainloop()
```
在这个示例中,我们更新了`ChildWindow`的初始化函数,使其可以接收额外的`spacing`参数,用于指定矩形之间的间隔。我们还更新了子窗口的`geometry`方法,以便根据矩形数量、宽度、高度和间隔计算出子窗口的大小。在`for`循环中,我们使用`x1`、`y1`、`x2`和`y2`变量计算出每个矩形的位置,其中`x1`和`y1`表示左上角的坐标,`x2`和`y2`表示右下角的坐标。我们使用`place`方法将每个矩形放置在正确的位置,并在每个矩形之间添加指定的间隔。
希望这个示例能够满足您的需求。如果您有任何问题或需要进一步的帮助,请随时告诉我。