版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CSDN_wujian/article/details/82933376
1.利用Python的tkinter画一个五角星;
2.做一个简单的动画,画布上的对象移动
分析五角心的五个顶点的坐标:
确立五角星的中心点和半径,再确立五角星的五个角的坐标信息,其中五角星的各个角读书为36度,具体的计算看图所示
代码如下所示:
# coding:utf-8
# 画五角星
from tkinter import *
import math
base=Tk()
canvas=Canvas(base,width=300,height=300,background='grey')
canvas.pack()
# 五角星的中心点
center_x=150
center_y=150
r=150 # 中心点距离每个角的距离,称为半径
# 依次存放五角星的五个点的位置
points=[
# 左上点
center_x-int(r*math.sin(2*math.pi/5)),
center_y-int(r*math.cos(2*math.pi/5)),
# 右上点
center_x+int(r*math.sin(2*math.pi/5)),
center_y-int(r*math.cos(2*math.pi/5)),
# 左下点
center_x-int(r*math.sin(math.pi/5)),
center_y+int(r*math.cos(math.pi/5)),
# 顶点
center_x,
center_y-r,
# 右下点
center_x+int(r*math.sin(math.pi/5)),
center_y+int(r*math.cos(math.pi/5)),
]
# 根据十个顶点创建一个多边形
canvas.create_polygon(points,outline='green',fill='yellow')
# 在中心点处画’五角星‘三个字
canvas.create_text(150,150,text='五角星')
# 消息循环
base.mainloop()
绑定鼠标的点击事件,让画布上的对象随着鼠标的不断点击不停地移动。
# encoding:utf-8
from tkinter import *
base=Tk()
def btn_click(event):
global canvas
# 参数:标识移动对象,移动的终点坐标(终点坐标越远,移动的越快)
canvas.move(ball,12,6)
canvas.move('fall',5,20)
canvas=Canvas(base,width=500,height=500)
canvas.pack()
# 绑定鼠标左键点击,<Button-1>标识左键,<Button-2>标识中键,<Button-3>标识鼠标右键
canvas.bind("<Button-1>",btn_click)
# 创建组件后返回id(标识具体的某一个对象)
ball=canvas.create_oval(20,20,50,50,fill='green')
# 创建组件使用tag属性(rag用于表示一类,用于多个对象)
canvas.create_text(123,56,fill='red',text='I love Python',tag='fall')
# 创建的时候如果没有指定tag可以利用addtag_withtag添加
# 同类函数还有addtag_all,add_tag_above,addtag_xxx等等
rectangle=canvas.create_rectangle(56,78,173,110,fill='grey')
canvas.addtag_withtag('fall',rectangle)
# 消息循环
base.mainloop()