Python GUI 编程tkinter--画五角星和简单的动画制作

版权声明:本文为博主原创文章,未经博主允许不得转载。 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()

猜你喜欢

转载自blog.csdn.net/CSDN_wujian/article/details/82933376
今日推荐