用python的tkinter模块画图时,如何调用自定义函数在Canvas画布上,做图,请举出一个例子,比如画一颗树,用自定义函数来画树枝,与叶子
时间: 2023-06-02 11:06:24 浏览: 221
Python tkinter模块弹出窗口及传值回到主窗口操作详解
好的,可以通过以下代码来调用自定义函数在Canvas画布上画图:
```python
from tkinter import *
# 创建主窗口和Canvas画布
root = Tk()
canvas = Canvas(root, width=500, height=500)
canvas.pack()
# 定义画树函数
def draw_tree(x, y, length, angle):
if length > 5:
# 画树干
x2 = x + length * math.cos(angle)
y2 = y - length * math.sin(angle)
canvas.create_line(x, y, x2, y2, width=2, fill='brown')
# 画左侧树枝
draw_tree(x2, y2, length * 0.7, angle + 0.3)
# 画右侧树枝
draw_tree(x2, y2, length * 0.7, angle - 0.3)
else:
# 画叶子
canvas.create_oval(x - 5, y - 5, x + 5, y + 5, fill='green')
# 调用画树函数画一颗树
draw_tree(250, 450, 100, -math.pi/2)
root.mainloop()
```
这个例子中,我们首先创建了一个Tkinter窗口和一个Canvas画布。然后,定义了一个名为draw_tree的自定义函数,该函数接受四个参数:画布上的起点坐标x、y,树干长度length和树枝角度angle。在函数内部,我们首先根据树枝长度和角度计算出树枝另一端的坐标,然后调用create_line方法在画布上画出树干。接着,分别递归调用draw_tree函数画出树干左右两侧的树枝。当树枝长度小于5时,我们就调用create_oval方法画出叶子。最后,我们调用draw_tree函数画出一颗树。
这样,通过调用自定义函数,我们就可以在Canvas画布上任意画出我们想要的图形了。
阅读全文