用Python制作一个随机抽奖小工具

最近在工作中面向社群玩家组织了一场活动,需要进行随机抽奖,参考之前小明大佬的案例,再结合自己的需求,做了一个简单的随机抽奖小工具。

今天我就来顺便介绍一下这个小工具的制作过程吧!

在这里插入图片描述

1. 核心功能设计

针对随机抽奖的小工具,需要可以导入参与抽奖的人员名单,然后选择不同的奖励类型进行随机抽取获奖名单并导出。

那么,简单进行需求拆解,大致梳理出以下核心功能:

•名单导入

为了避免出现重名情况,这里我们约定以下几点:

①导入参与抽奖的人员名单文件(xlsx类型文件)

②数据第一列为ID,第二列为name

参考格式案例

在这里插入图片描述

•奖项类型选择

奖项类型是指一等奖、二等奖这类标识语,这里我们内置了特等奖-六等奖共7个选项供选取

•本轮人数

本轮人数是指每次抽奖时一次性抽取的获奖人数,默认值为5

①当填入的数字超过剩余未获奖人数时,会进行提示并显示未获奖人数

②当填入的数字为0表示轮空,也需要手动结束

③当填入的数字为负数时,点击抽奖无响应

④当填入的非数字时,会进行提示需要输入正确数字

•抽奖时轮播区域

用于显示抽奖中随机滚动参与本轮抽奖的人员名单

•人员名单

当选择正确的人员名单文件后,这里会自动显示人员信息列表

•中奖记录

记录每次抽取的奖项类型及获奖名单

•开始抽奖

①开始抽奖时,会先判断抽奖设置是否满足条件,否则会有相关提示

②抽奖中点击开始抽奖会提示正在抽奖中

•结束

①非抽奖状态下点击结束无响应

②抽奖中点击结束将显示本次抽奖结果

•重置

①重置会清掉历史抽奖记录(含本地文件,如有必要建议对中奖名单留档)

②抽奖中点击重置会提示正在抽奖中

③非抽奖状态点击重置会提示该操作会删除历史记录,是否确认

基本功能点确认后,我们就开始进行GUI设计。

在这里插入图片描述

2. GUI设计与实现

基于功能点,我们用axure简单进行UI布局设计,然后再通过GUI开发库进行设计,这里依旧采用的是pysimplegui,主要是简单方

便。
在这里插入图片描述

Python学习交流Q群:906715085###
UI布局设计-axure

基于GUI设计,我们编码如下:
nameList_column = [
    [sg.Text('人员名单:')],
    [sg.Listbox(values=[], size=(20, 10), key='nameList')],
]
result_column = [
    [sg.Text('中奖记录:')],
    [sg.Multiline('', size=(48, 10), key='result', text_color='DeepPink')],
]

# 主题设置
sg.theme('SystemDefaultForReal')

# 布局设置
layout = [[sg.Text('选择参与抽奖人员名单文件:', font=('微软雅黑', 12)), sg.InputText('', key='_file', size=(50, 1), font=('微软雅黑', 10), enable_events=True), sg.FileBrowse('打开', file_types=(('Text Files', '*.xlsx'),), size=(10, 1), font=('微软雅黑', 11))],
          [sg.Frame(layout=[
              [sg.Text('本轮奖项:', font=(
  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,制作一个转盘抽奖工具需要使用Python的GUI库,我这里使用的是Tkinter。以下是一个简单的转盘抽奖工具代码,你可以根据需求进行修改和优化: ```python import tkinter as tk import random # 奖品列表 prizes = ['一等奖', '二等奖', '三等奖', '谢谢参与'] # 转盘指针角度 angle = 0 # 定时器 timer = None # 开始抽奖 def start(): global angle, timer # 生成随机角度 angle = random.randint(0, 359) # 设置定时器 timer = root.after(10, rotate) # 转盘旋转 def rotate(): global angle, timer # 将转盘指针角度加1 angle += 1 # 更新转盘指针角度 canvas.itemconfigure(pointer, angle=angle) # 如果转盘指针角度达到随机角度,则停止旋转 if angle >= angle + 360: root.after_cancel(timer) # 显示抽奖结果 result.config(text=prizes[angle // 90 % 4]) # 创建主窗口 root = tk.Tk() # 设置窗口标题 root.title('转盘抽奖') # 创建画布 canvas = tk.Canvas(root, width=300, height=300) canvas.pack() # 创建转盘 canvas.create_arc(50, 50, 250, 250, start=0, extent=90, fill='red') canvas.create_arc(50, 50, 250, 250, start=90, extent=90, fill='blue') canvas.create_arc(50, 50, 250, 250, start=180, extent=90, fill='green') canvas.create_arc(50, 50, 250, 250, start=270, extent=90, fill='yellow') # 创建转盘指针 pointer = canvas.create_polygon(150, 40, 160, 60, 140, 60, fill='black') # 创建抽奖按钮 button = tk.Button(root, text='抽奖', command=start) button.pack() # 创建抽奖结果标签 result = tk.Label(root, text='', font=('Arial', 24)) result.pack() # 运行主程序 root.mainloop() ``` 这个小工具的界面很简单,只有一个转盘和一个抽奖按钮,点击抽奖按钮后,转盘会开始旋转,当转盘指针旋转到随机角度时,停止旋转并显示抽奖结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值