用python的tkinter绘画一个动态显示的蛋糕
时间: 2024-05-11 16:18:28 浏览: 105
好的,我来给你示范一下。
首先,我们需要导入`tkinter`库和`time`库:
```python
import tkinter as tk
import time
```
接下来,我们需要创建一个画布和一个窗口,并设置窗口的大小和标题:
```python
root = tk.Tk()
root.geometry("500x500")
root.title("动态蛋糕")
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
```
然后,我们需要定义一个绘制蛋糕的函数`draw_cake`,该函数接收一个整数`n`作为参数,表示要绘制多少层蛋糕。在该函数中,我们使用一个循环来绘制每一层蛋糕,并使用`after`方法来实现动态显示:
```python
def draw_cake(n):
canvas.delete("all") # 清空画布
for i in range(n):
canvas.create_arc(50+i*20, 50+i*20, 350-i*20, 350-i*20, start=0, extent=180, fill="red", width=3)
canvas.create_rectangle(50+i*20, 175-i*20, 350-i*20, 225-i*20, fill="red", width=3)
canvas.create_arc(50+i*20, 50+i*20, 350-i*20, 350-i*20, start=180, extent=180, fill="white", width=3)
canvas.create_text(200, 175-i*20, text="层{}".format(i+1), font=("黑体", 16))
if n < 10:
root.after(1000, draw_cake, n+1)
```
在该函数中,我们使用`canvas.delete("all")`方法来清空画布,然后使用`canvas.create_arc`和`canvas.create_rectangle`方法来绘制蛋糕的每一层,使用`canvas.create_text`方法来添加层号。最后,我们使用`root.after`方法来实现动态显示,每次调用`draw_cake`函数时,将层数加1,并在`n`小于10时继续调用`root.after`方法。
最后,我们需要在主程序中调用`draw_cake`函数,并开启主程序的事件循环:
```python
draw_cake(1)
root.mainloop()
```
完整代码如下:
```python
import tkinter as tk
import time
root = tk.Tk()
root.geometry("500x500")
root.title("动态蛋糕")
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
def draw_cake(n):
canvas.delete("all") # 清空画布
for i in range(n):
canvas.create_arc(50+i*20, 50+i*20, 350-i*20, 350-i*20, start=0, extent=180, fill="red", width=3)
canvas.create_rectangle(50+i*20, 175-i*20, 350-i*20, 225-i*20, fill="red", width=3)
canvas.create_arc(50+i*20, 50+i*20, 350-i*20, 350-i*20, start=180, extent=180, fill="white", width=3)
canvas.create_text(200, 175-i*20, text="层{}".format(i+1), font=("黑体", 16))
if n < 10:
root.after(1000, draw_cake, n+1)
draw_cake(1)
root.mainloop()
```
阅读全文