Tkinter编写一个程序显示递归树
时间: 2024-05-07 08:22:26 浏览: 13
好的,以下是一个简单的Tkinter程序,用于显示递归树。
```python
import tkinter as tk
# 递归函数,用于绘制树
def draw_tree(canvas, x, y, length, angle, depth):
if depth == 0:
return
# 计算下一个节点的坐标
x1 = x + int(length * tk.cos(tk.radians(angle)))
y1 = y - int(length * tk.sin(tk.radians(angle)))
# 绘制当前节点和下一个节点之间的线段
canvas.create_line(x, y, x1, y1)
# 递归绘制下一个节点的子节点
draw_tree(canvas, x1, y1, length // 2, angle - 30, depth - 1)
draw_tree(canvas, x1, y1, length // 2, angle + 30, depth - 1)
# 创建一个窗口
window = tk.Tk()
window.title("递归树")
# 创建一个画布
canvas_width = 500
canvas_height = 500
canvas = tk.Canvas(window, width=canvas_width, height=canvas_height)
canvas.pack()
# 绘制树
start_x = canvas_width // 2
start_y = canvas_height - 50
draw_tree(canvas, start_x, start_y, 150, -90, 7)
# 进入消息循环
window.mainloop()
```
程序的主要部分是递归函数`draw_tree`,用于绘制树。它接收`canvas`、当前节点的坐标`(x, y)`、当前节点的长度`length`、当前节点的角度`angle`、当前节点的深度`depth`作为参数。如果深度为0,则直接返回。否则,计算下一个节点的坐标`(x1, y1)`,绘制当前节点和下一个节点之间的线段,然后递归绘制下一个节点的子节点。
在主程序中,创建一个窗口和一个画布,然后调用`draw_tree`函数绘制树。在本例中,树的起点位于画布的中心底部,长度为150,角度为-90,深度为7。您可以根据需要更改这些参数。
最后,进入消息循环以显示窗口和画布。运行程序后,您将看到一个递归树的图像。