Python用tkinter画递归树
时间: 2023-11-16 10:58:18 浏览: 35
下面是一个用Python的tkinter模块画递归树的例子:
```python
import tkinter as tk
import math
class Tree:
def __init__(self, canvas, x, y, angle, length, depth):
self.canvas = canvas
self.x = x
self.y = y
self.angle = angle
self.length = length
self.depth = depth
def draw(self):
x2 = self.x + math.cos(math.radians(self.angle)) * self.length
y2 = self.y - math.sin(math.radians(self.angle)) * self.length
self.canvas.create_line(self.x, self.y, x2, y2, width=self.depth)
if self.depth > 1:
Tree(self.canvas, x2, y2, self.angle - 20, self.length * 0.8, self.depth - 1).draw()
Tree(self.canvas, x2, y2, self.angle + 20, self.length * 0.8, self.depth - 1).draw()
def draw_tree():
canvas.delete(tk.ALL)
depth = int(depth_var.get())
length = int(length_var.get())
Tree(canvas, 200, 400, -90, length, depth).draw()
root = tk.Tk()
root.title("Recursive Tree")
canvas = tk.Canvas(root, width=400, height=500)
canvas.pack()
depth_var = tk.StringVar(value="10")
length_var = tk.StringVar(value="100")
tk.Label(root, text="Depth:").pack()
tk.Entry(root, textvariable=depth_var).pack()
tk.Label(root, text="Length:").pack()
tk.Entry(root, textvariable=length_var).pack()
tk.Button(root, text="Draw", command=draw_tree).pack()
root.mainloop()
```
这个例子会在GUI界面中显示一个递归树。在界面中可以调整树的深度和长度,并且点击“Draw”按钮会重新绘制树。