python 做一个今天吃什么的大转盘,每个分区用马卡龙色做背景颜色,分区做20个;添加一个指针,一个“开始”按钮,点击开始按钮,指针开始旋转,3s后随机停止,一个配置按钮,点击配置按钮弹出窗口来编辑每个分区的食物,弹出的窗口有两个按钮:保存、取消;
时间: 2024-12-08 15:15:17 浏览: 15
一组马卡龙配色的多边形PPT背景图片
要在Python中制作这样一个大转盘应用,我们可以使用Tkinter库来创建用户界面,random库来生成随机数,以及time库来控制定时。以下是一个简单的示例,展示了如何实现这个功能:
```python
import tkinter as tk
from tkinter import ttk
import random
from tkinter import messagebox
# 马卡龙颜色列表
macaron_colors = ["#F5D7A1", "#E96DBB", "#7CCDFF", "#D4AF37", "#98CCE0"]
class WheelApp(tk.Tk):
def __init__(self):
super().__init__()
self.title("今日美食轮盘")
self.wheel_canvas = tk.Canvas(self, width=400, height=400, bg="white")
self.wheel_canvas.pack(pady=20)
# 创建分区
sectors = [ttk.Label(self.wheel_canvas, text=f"区域 {i+1}",
font=("Arial", 18), anchor="center",
bg=macaron_colors[i % len(macaron_colors)])
for i in range(20)]
for sector in sectors:
sector.place(relx=random.random(), rely=random.random(), width=200, height=200)
self.pointer_label = ttk.Label(self.wheel_canvas, text="转动中的...")
self.pointer_label.place(x=100, y=100, width=200, height=100)
self.start_button = ttk.Button(self, text="开始", command=self.start_wheel)
self.config_button = ttk.Button(self, text="配置", command=self.show_config_window)
self.start_button.pack(side="top")
self.config_button.pack(side="top")
def start_wheel(self):
if not self.is_running:
self.is_running = True
self.update_idletasks()
self.wheel_animation()
def wheel_animation(self):
self.after(100, self.move_pointer)
if self.is_running and not self.is_stopped:
self.after(3000, lambda: self.stop_wheel())
def move_pointer(self):
# 指针移动逻辑
pass # 这里需要根据当前指针位置和下一个位置计算并更新坐标
def stop_wheel(self):
self.is_running = False
self.pointer_label.config(text="已停止")
self.after_cancel(self.animation_id)
def show_config_window(self):
# 弹窗显示配置食物的代码
config_win = tk.Toplevel()
config_win.geometry("300x200")
save_button = ttk.Button(config_win, text="保存", command=config_win.destroy) # 这里只是一个例子,实际应处理保存操作
cancel_button = ttk.Button(config_win, text="取消", command=config_win.destroy)
save_button.pack(pady=10)
cancel_button.pack()
# 真正实现编辑食物的操作可以在这里,比如读取和修改分区标签的内容
app = WheelApp()
app.mainloop()
阅读全文