当前位置:首页 > 新闻动态 > 网站文章

宅在家太无聊了,我用Python做了一个能作弊的抽奖程序

来源: 浏览:112 时间:2023-08-07

马上就要元旦了,可以宅在家里好多天了,不会还有人在客厅围绕茶几走1万步了,在客厅放几个玩具,扔圈圈玩。太无聊了,Python好久不写了,赶紧操练起来,反正闲着也是无聊,可以试试写这个抽奖小程序说不定可以在年前公司年会获得大奖呢~

既然是玩Python的不如自己动手写一个抽奖软件,我们设置一等奖,二等奖,三等奖。

一等奖我们放华为手机,二等奖我们放扫地机器人,三等奖我们放手环。(当然这个可以自己设置),而且还留一个后门(嘿嘿,可以作弊哦,这个最后讲)。小伙伴快来一起看一下吧。



01.设计界面

明确我们的程序需要实现哪些功能:

  • 界面各个组件的位置,例如软件题目的位置,名单的摆放位置等等。
  • 如何实现抽奖的功能,让名字滚动起来
  • 如何切换不同的奖品等级

我们先来确定各个组件的摆放位置,这个其实很简单,首先,我们利用tkinter的画布功能,确定我们的画布大小,然后在画布上的具体位置摆放我们的画布大小即可。

例如上图中画布上方的老鼠图案,其程序如图所示。通过Image读入老鼠的图案,然后将其调整为合适的大小,然后通过tkinter的Label类来显示出图片,并规定好图片的摆放位置即可。图中的其他图片和Text类也是采用同样的方式进行处理即可,区别在于Text不需要插入图片,只需要规定其Text类的位置和大小即可。


02.让图片滚动起来

现在我们实现了界面的展示,那么我们如何实现去让界面动起来,也就是让名字滚动起来抽奖呢,我们只需要创建一个新的线程,并在新的线程里实现对于数据的动态滚动切换,程序如下所示:

我们通过不断的切换抽奖按钮,来实现新建线程,在新建的线程里,我们通过向界面右侧不断的插入我们选出来的候选人,然后判断该等级下的名额是否已满,如果名额已满,则弹出提示对话框,就想这样:

关键的线程程序如下:

def rounds(self):
if self.isloop == True: # 判断是否开始循环
return
while True:
if self.isloop == False:
self.flag += 1
if self.flag == 2:
self.flag = 0
if self.target == self.prise and self.name in self.data:
self.btn1['text'] = self.name
print(self.btn1['text'])
if len(self.name) == 2:
r = self.name[0] + " " + self.name[1]
else:
r = self.name
else:
while self.btn1['text'] == self.name:
temp = random.choice(self.data)
if len(temp) == 2:
r = temp[0] + " " + temp[1]
else:
r = temp
self.btn1['text'] = r

if self.newloop == True:
self.newloop = False
if self.target.size()>=5:
if self.target == self.thirdwinner1:
self.target = self.thirdwinner2
else:
self.btn1['text'] = "OVER"
tkinter.messagebox.showinfo('提示', "恭喜拉!中奖名单已产生")
return
self.target.insert(tkinter.END, r.center(5," "))
self.data.remove(r)
self.namelist.delete(1.0, 'end')
self.namelist.insert(tkinter.END, (" ").join(self.data))
return
time.sleep(0.1) # 延时操作

temp = random.choice(self.data)
if len(temp) == 2:
r = temp[0]+" "+temp[1]
else:
r = temp

self.btn1['text'] = r

线程程序中,self.target就是我们的目标list,我们只需要选出名字,然后在目标的list中插入名字即可。

这就实现了我们让抽奖界面动起来的目的,那下面我们如何实现切换不同的奖品等级呢,答案就在我们的图标设置上,我们一共有三种图标设置,分别对应一二三等奖,一等奖是手机,二等奖是扫地的机器人,三等奖是手环。

我们只需要点击不同的图标设置,便会切换不同的奖品抽取,也就是切换我们的self.target所对应的list。


03.抽奖作弊

每次抽奖都不中,不如给自己留一个暗门,如果想让某一个人或者自己能中奖,我们只要加一行代码即可。

思路其实很简单,就是我们在设计抽奖类的地方,我们传入一个参数写好的名字,如果名单在namelist里面,那么这个人必中。比如我把中奖名单里面改成我自己。

整个抽奖程序做的有点粗糙,没有细细打磨。用Python自带的tk做的,其实还有很多地方可以改善和优化,有兴趣的小伙伴可以拿源码自己改改,写写代码也是很有趣的。

后面我们会开发一个Flask版本的抽奖,网页抽奖更酷!

地址 · ADDRESS

地址:建邺区新城科技园嘉陵江东街18号2层

邮箱:309474043@qq.Com

点击查看更多案例

联系 · CALL TEL

400-8793-956

售后专线:025-65016872

业务QQ:309474043    售后QQ:1850555641

©南京安优网络科技有限公司 版权所有   苏ICP备12071769号-4  网站地图