Tkinter编写一个程序显示树树枝递归生成且可控制分叉数
时间: 2024-05-12 10:12:55 浏览: 94
好的,下面是一个简单的Tkinter程序,用于显示树枝递归生成:
```python
import tkinter as tk
import math
def draw_tree(canvas, x, y, length, angle, branch_angle, depth):
if depth == 0:
return
x2 = x + length * math.cos(math.radians(angle))
y2 = y - length * math.sin(math.radians(angle))
canvas.create_line(x, y, x2, y2, width=depth)
draw_tree(canvas, x2, y2, length*0.75, angle+branch_angle, branch_angle, depth-1)
draw_tree(canvas, x2, y2, length*0.75, angle-branch_angle, branch_angle, depth-1)
def update_tree():
branch_angle = int(slider.get())
canvas.delete("all")
draw_tree(canvas, width/2, height, 100, -90, branch_angle, 10)
# 创建Tkinter窗口
root = tk.Tk()
root.title("Tree")
root.geometry("600x600")
# 创建画布
width = 600
height = 500
canvas = tk.Canvas(root, width=width, height=height)
canvas.pack()
# 创建滑动条控制分支角度
slider = tk.Scale(root, from_=0, to=90, orient=tk.HORIZONTAL, command=update_tree)
slider.pack()
# 初始绘制树
draw_tree(canvas, width/2, height, 100, -90, 30, 10)
root.mainloop()
```
该程序使用Tkinter创建了一个窗口,其中包含一个画布和一个滑动条。滑动条控制分支角度,根据滑动条的值,使用递归算法绘制树枝。每个绘制的线条的宽度根据深度递减,以创建更自然的树枝效果。
你可以修改分支角度、初始长度和深度等参数,以创建不同的树形结构。
阅读全文