python实现大转盘抽奖效果

时间:2021-05-22

本文实例为大家分享了python实现大转盘抽奖的具体代码,供大家参考,具体内容如下

选择转盘中的某一个方框,来进行抽奖

import tkinter#导入线程模块import threadingimport time #导入代码的sleep 代码休眠 root = tkinter.Tk()root.title('大转盘')root.minsize(300,300) #摆放按钮btn1 = tkinter.Button(root,text = '樱桃',bg = 'red')btn1.place(x = 20,y = 20,width = 50,height = 50) btn2 = tkinter.Button(root,text = '香蕉',bg = 'white')btn2.place(x = 90,y = 20,width = 50,height = 50) btn3 = tkinter.Button(root,text = '苹果',bg = 'white')btn3.place(x = 160,y = 20,width = 50,height = 50) btn4 = tkinter.Button(root,text = '西瓜',bg = 'white')btn4.place(x = 230,y = 20,width = 50,height = 50) btn5 = tkinter.Button(root,text = '鸭梨',bg = 'white')btn5.place(x = 230,y = 90,width = 50,height = 50) btn6 = tkinter.Button(root,text = '榴莲',bg = 'white')btn6.place(x = 230,y = 160,width = 50,height = 50) btn7 = tkinter.Button(root,text = '柚子',bg = 'white')btn7.place(x = 230,y = 230,width = 50,height = 50) btn8 = tkinter.Button(root,text = '葡萄',bg = 'white')btn8.place(x = 160,y = 230,width = 50,height = 50) btn9 = tkinter.Button(root,text = '草莓',bg = 'white')btn9.place(x = 90,y = 230,width = 50,height = 50) btn10 = tkinter.Button(root,text = '芒果',bg = 'white')btn10.place(x = 20,y = 230,width = 50,height = 50) btn11 = tkinter.Button(root,text = '荔枝',bg = 'white')btn11.place(x = 20,y = 160,width = 50,height = 50) btn12 = tkinter.Button(root,text = '甘蔗',bg = 'white')btn12.place(x = 20,y = 90,width = 50,height = 50) #将所有选项组成列表fruitlists = [btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btn10,btn11,btn12] #是否开启循环的标志isloop = False#是否停止标志stopsign=False #是否接收到 stop信号#存储停止id------用于进行stop后的重新启动stopid=Nonedef round(): global isloop global stopid #判断是否开始循环 if isloop == True: return i=1 if isinstance(stopid,int): i=stopid while True: #延时操作 time.sleep(0.2) #将所有的组件背景变为白色 for x in fruitlists: x['bg'] = 'white' #将当前数值对应的组件变色 fruitlists[i]['bg'] = 'red' #变量+1 i += 1 print('当前i为',i) #当前i,用来追踪当前位置 #如果i大于最大索引直接归零 if i >= len(fruitlists): i = 0 if stopsign == True:#当停止标志 为真时 isloop=False stopid =i#赋值stopid breakdef stop1(): global stopsign if stopsign ==True:#当多接收stop1()函数时 ,直接跳过 return stopsign=True#建立一个新线程的函数def newtask(): global isloop global stopsign #建立线程 stopsign=False #print(stopsign) #打印 点击开始时的stopsign t = threading.Thread(target = round) #开启线程运行 t.start() # 设置循环开始标志 isloop = True #开始按钮btn_start = tkinter.Button(root,text = 'start',command = newtask)btn_start.place(x = 90,y = 125,width = 50,height = 50) #停止按钮btn_stop = tkinter.Button(root,text = 'stop',command=stop1)btn_stop.place(x = 160,y = 125,width = 50,height = 50) root.mainloop()

效果图:

就是上图这个界面了:

start 开始按钮

stop 结束按钮

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章