python窗口画五角星并改变颜色

要求:设计一个窗体,有1个800*800的画布组件,4个按钮Star、Red、Blue、Clear。按下 Star后在画布显示一个黄色的五角星,按下Red后,五角星变为红色;按下Blue后,五角星变为蓝色:按下 Clear 后清空画布。 做出所示效果

 

from tkinter import Tk, Canvas, Button
import math

root = Tk()

canvas = Canvas(root, width=800, height=800)
canvas.pack()

star_color = "yellow"

def fivestar(radius):
    points = []
    inner_radius = radius / (1 + math.sqrt(5) / 2)  # 计算内接圆半径
    for i in range(5):
        outer_angle = 2 * math.pi * i / 5
        inner_angle = outer_angle + math.pi / 5

        outer_x = radius * math.cos(outer_angle) + 400
        outer_y = radius * math.sin(outer_angle) + 400
        inner_x = inner_radius * math.cos(inner_angle) + 400
        inner_y = inner_radius * math.sin(inner_angle) + 400

        points.extend([outer_x, outer_y, inner_x, inner_y])
    return points

def draw_star():
    canvas.delete("all")
    radius = 150
    points = fivestar(radius)
    canvas.create_polygon(points, fill=star_color)

def change_red():
    global star_color
    star_color = "red"
    draw_star()

def change_blue():
    global star_color
    star_color = "blue"
    draw_star()

def clear_canvas():
    canvas.delete("all")

start_button = Button(root, text="Star", command=draw_star)
start_button.pack()

red_button = Button(root, text="Red", command=change_red)
red_button.pack()

blue_button = Button(root, text="Blue", command=change_blue)
blue_button.pack()

clear_button = Button(root, text="Clear", command=clear_canvas)
clear_button.pack()

root.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值