用Python做个年会抽奖小程序吧

  又到了每年一度的年会,最期盼的可能就是抽奖环节了。如果大家都吐槽抽奖不公,那不如用程序来抽吧。

  实现思路

  在屏幕上不断滚动名字,然后点击停止后停止滚动。名单是保存在excel中,所以需要从excel解析出名单。有思路了,那就开始吧。

  素材准备

  先找一张背景图吧,有鼓,那么就把鼠标变成鼓槌,敲一下鼓开始滚动,再敲一下鼓就停止滚动,依次循环。思想不错,那就这么实现吧。

  还需要一个鼓槌的图片,如下图片。但是该图背景是白色的,在红色背景图片

  上的绘制出来会是白色图片,所以需要将图片白色背景修改为透明。只能自己动手,装个Photoshop来修改了。具体方法百度一下就可以了很简单。

  没有背景音乐有点乏味,那就加个背景音乐吧,网上找了一个鼓声的短音乐。

  万事俱备只欠撸码

  按功能块大概说说:

  由于数据存在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年换个背景图片还能接着用

  编程有时候能够带给我们乐趣