今年的春节真的是魔幻像一场电影,宅在家里好多天了,有的人在客厅围绕茶几已经走了1万步了,有的人没事在客厅放几个玩具,扔圈圈玩。太无聊了,Python好久不写了,赶紧操练起来,反正闲着也是无聊。年前公司年会,我成功的避开了8轮抽奖,一个都没有抽到。说起来就很生气~~
既然是玩Python的不如自己动手写一个抽奖软件,我们设置一等奖,二等奖,三等奖。
一等奖我们放华为手机,二等奖我们放扫地机器人,三等奖我们放手环。(当然这个可以自己设置),而且还留一个后门(嘿嘿,可以作弊哦,这个最后讲)。小伙伴快来一起看一下吧。
01
设计界面
明确我们的程序需要实现哪些功能:
-
界面各个组件的位置,例如软件题目的位置,名单的摆放位置等等。
-
如何实现抽奖的功能,让名字滚动起来
-
如何切换不同的奖品等级
我们先来确定各个组件的摆放位置,这个其实很简单,首先,我们利用tkinter的画布功能,确定我们的画布大小,然后在画布上的具体位置摆放我们的画布大小即可。
例如上图中画布上方的老鼠图案,其程序如图所示。通过Image读入老鼠的图案,然后将其调整为合适的大小,然后通过tkinter的Label类来显示出图片,并规定好图片的摆放位置即可。图中的其他图片和Text类也是采用同样的方式进行处理即可,区别在于Text不需要插入图片,只需要规定其Text类的位置和大小即可。
02
让图片滚动起来
现在我们实现了界面的展示,那么我们如何实现去让界面动起来,也就是让名字滚动起来抽奖呢,我们只需要创建一个新的线程,并在新的线程里实现对于数据的动态滚动切换,程序如下所示:
我们通过不断的切换抽奖按钮,来实现新建线程,在新建的线程里,我们通过向界面右侧不断的插入我们选出来的候选人,然后判断该等级下的名额是否已满,如果名额已满,则弹出提示对话框,就想这样:
关键的线程程序如下:
] = r
(代码可以左右滑动)
线程程序中,self.target就是我们的目标list,我们只需要选出名字,然后在目标的list中插入名字即可。
这就实现了我们让抽奖界面动起来的目的,那下面我们如何实现切换不同的奖品等级呢,答案就在我们的图标设置上,我们一共有三种图标设置,分别对应一二三等奖,一等奖是手机,二等奖是扫地的机器人,三等奖是手环。
我们只需要点击不同的图标设置,便会切换不同的奖品抽取,也就是切换我们的self.target所对应的list。
03
抽奖作弊
每次抽奖都不中,不如给自己留一个暗门,如果想让某一个人或者自己能中奖,我们只要加一行代码即可。
思路其实很简单,就是我们在设计抽奖类的地方,我们传入一个参数写好的名字,如果名单在namelist里面,那么这个人必中。比如我把中奖名单里面改成我自己。
整个抽奖程序做的有点粗糙,没有细细打磨。用Python自带的tk做的,其实还有很多地方可以改善和优化,有兴趣的小伙伴可以拿源码自己改改,写写代码也是很有趣的。
后面我们会开发一个Flask版本的抽奖,网页抽奖更酷!
另外春节宅在家非常无聊,我把几年前的一个小号重新开了,有空写点非技术的八卦新闻,定期发点福利,欢迎来撩吧。
程序猿Leo
一位80后资深码农,玩技术,做产品
获取源码:【菜鸟版抽奖】
情人节还有10几天了,我已经累计牵线了8对,想要脱单的抓紧啦!
点击阅读原文,30秒火速脱单
本篇文章来源于: 菜鸟学Python
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
内容反馈