要求:设计一个窗体,有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()