Tkinter编写一个程序显示递归分叉树
时间: 2024-05-07 09:22:33 浏览: 104
好的,以下是一个简单的Tkinter程序,用于显示递归分叉树。它使用了递归函数来绘制树形结构,并且可以根据用户输入调整树的深度和角度。
```python
import tkinter as tk
import math
class TreeDisplay:
def __init__(self, depth, angle):
self.depth = depth
self.angle = angle
self.window = tk.Tk()
self.canvas = tk.Canvas(self.window, width=800, height=600)
self.canvas.pack()
self.draw_tree(400, 550, -90, 200)
self.window.mainloop()
def draw_tree(self, x, y, heading, length):
if self.depth == 0:
return
x2 = x + length * math.cos(math.radians(heading))
y2 = y + length * math.sin(math.radians(heading))
self.canvas.create_line(x, y, x2, y2)
self.draw_tree(x2, y2, heading + self.angle, length * 0.75)
self.draw_tree(x2, y2, heading - self.angle, length * 0.75)
self.depth -= 1
def set_depth(self, value):
self.depth = value
self.canvas.delete("all")
self.draw_tree(400, 550, -90, 200)
def set_angle(self, value):
self.angle = value
self.canvas.delete("all")
self.draw_tree(400, 550, -90, 200)
display = TreeDisplay(8, 30)
depth_slider = tk.Scale(display.window, from_=0, to=12, orient=tk.HORIZONTAL, label="Depth", command=display.set_depth)
depth_slider.set(8)
depth_slider.pack()
angle_slider = tk.Scale(display.window, from_=0, to=90, orient=tk.HORIZONTAL, label="Angle", command=display.set_angle)
angle_slider.set(30)
angle_slider.pack()
display.window.mainloop()
```
该程序使用了tkinter模块创建了一个窗口,并在窗口中创建了一个画布。在画布上使用递归函数来绘制树形结构,其中参数包括起点坐标、角度、长度和深度。可以使用滑块来调整树的深度和角度,从而改变树的形状。
阅读全文