import tkinter as tk
import random
import math
import time
选项列表
options = [“麻辣香锅”, “烤盘饭”, “盖浇饭”, “蛋包饭”, “黄焖鸡”, “酸菜鱼”]
num_options = len(options)
创建窗口
root = tk.Tk()
root.title(“洪若萌今天吃什么”)
canvas = tk.Canvas(root, width=400, height=450)
canvas.pack()
center_x, center_y, radius = 200, 200, 150
angle_offset = 0 # 旋转角度
start_angle = -90 # 让第一项与箭头对齐(调整初始角度)
绘制转盘
def draw_wheel(angle_offset=0):
canvas.delete(“all”)
for i in range(num_options):
angle_start = (360 / num_options) * i + angle_offset + start_angle
extent = 360 / num_options
color = "#" + "".join([random.choice("89ABCDEF") for _ in range(6)])
canvas.create_arc(50, 50, 350, 350, start=angle_start, extent=extent, fill=color, outline="black")
# 计算文本坐标
angle_mid = math.radians(angle_start + extent / 2)
text_x = center_x + math.cos(angle_mid) * radius * 0.7
text_y = center_y - math.sin(angle_mid) * radius * 0.7
canvas.create_text(text_x, text_y, text=options[i], font=("Arial", 12), fill="black")
# 画指针
canvas.create_polygon([190, 20, 210, 20, 200, 50], fill="red", outline="black")
旋转转盘(带动画效果)
def spin_wheel():
global angle_offset
# 计算初始角速度(随机一个较大的角速度)
speed = random.randint(20, 30)
while speed > 0:
angle_offset += speed
draw_wheel(angle_offset)
root.update()
time.sleep(0.05) # 控制旋转速度
speed -= 0.3 # 逐步减速
# 计算最终停下的奖品
final_angle = (angle_offset + start_angle) % 360 # 加入初始角度偏移进行修正
winning_index = int(final_angle / (360 / num_options)) % num_options
result_label.config(text=f"今日菜系:{options[winning_index]}")
draw_wheel()
按钮
spin_button = tk.Button(root, text=“旋转”, command=spin_wheel)
spin_button.pack()
result_label = tk.Label(root, text=“”)
result_label.pack()
root.mainloop()
帮我写个Python转盘,带箭头的那种,随机转动多少圈,最后箭头指向其中一块区域,作用是来帮我选择“洪若萌今天吃什么”,里面的菜系有:留夫鸭 杨国福 张亮 刘文祥 炸鸡 小酥肉 炒面 口水鸡 汉堡 轻食,最后打印出来选择的索引:今日菜系:“{$}”. 帮我修改一下代码