又到了每年一度的年会,最期盼的可能就是抽奖环节了。如果大家都吐槽抽奖不公,那不如用程序来抽吧。
实现思路
在屏幕上不断滚动名字,然后点击停止后停止滚动。名单是保存在excel中,所以需要从excel解析出名单。有思路了,那就开始吧。
素材准备
先找一张背景图吧,有鼓,那么就把鼠标变成鼓槌,敲一下鼓开始滚动,再敲一下鼓就停止滚动,依次循环。思想不错,那就这么实现吧。
还需要一个鼓槌的图片,如下图片。但是该图背景是白色的,在红色背景图片
没有背景音乐有点乏味,那就加个背景音乐吧,网上找了一个鼓声的短音乐。
万事俱备只欠撸码
按功能块大概说说:由于数据存在excel中,所以需要将excel的数据解析,并导入内存。我是用tuple的list来保存的。数据模型,[(工号,名字)],用到的库 import xlrd;
UI界面就用了游戏编程使用的pygame包,import pygame即可(前提是已经安装了pygame);
背景音乐和鼠标替换都使用pygame的接口:音乐:
pygame.mixer.init()
pygame.mixer.music.load('9224.wav')
pygame.mixer.music.play()
pygame.mixer.music.stop()
鼠标替换:
思路就是隐藏鼠标,然后在鼠标的位置绘制图片即可。
x, y = pygame.mouse.get_pos()
x -= m.get_width() / 2
y -= m.get_height() / 2
pygame.mouse.set_visible(False)
screen.blit(m, (x, y))
打包为exe,让其在任何一台windows电脑都能飞起来:
一直用的pyinstaller,还是比较方便好用,依赖的数据文件别忘记copy到exe目录下即可。
os.system("pyinstaller -F Annual_awards_main.py")
os.system("copy 9224.wav dist\\")
os.system("copy bg_1366x768.png dist\\")
完整源码
https://github.com/ggangliu/Annual-meeting-lottery.git
2019年换个背景图片还能接着用
编程有时候能够带给我们乐趣