python实现大转盘抽奖效果
作者:max_ez 发布时间:2023-12-16 13:50:30
标签:python,转盘,抽奖
本文实例为大家分享了python实现大转盘抽奖的具体代码,供大家参考,具体内容如下
选择转盘中的某一个方框,来进行抽奖
import tkinter
#导入线程模块
import threading
import 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=None
def 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
break
def 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 结束按钮
来源:https://blog.csdn.net/userez/article/details/78943621
0
投稿
猜你喜欢
- 一.GUI(Graphical User Interface(图形用户接口))1.导入需要用到的包import tkinter as tki
- 这个问题我在给新云CMS升级时遇到了,按照升级步骤做完,后台登录时,出现“HTTP 错误 500.100 - 内部服务器错误 - ASP 错
- 前几天帮人调试一个ASP+SQL2000+IIS5.1/6.0的网站程序,调试过程中遇到的问题如下:一、 SQLServer登录 原先存在备
- 本文实例讲述了Python实现的多线程http压力测试代码。分享给大家供大家参考,具体如下:# Python version 3.3__au
- 一般用 createProcessingInstruction 方法创建处理指令指定参数为 "xml","ve
- 前言在做数据报表时,需要对某一时间段分组,以1小时为时间间隔统计各项数据,如9点-10点,10点-11点…,但是现在有种情况,时间有可能不是
- 写过一篇"正则表达式30分钟入门教程",有读者问:[^abc]表示不包含a、b、c中任意字符, 我想实现不包含字符串ab
- 有关JS中字符串的相关文章,现在网上大概不计其数了。这里我不想再就这个问题做过多的论述,只是对几种方式的实现在各种浏览器中的执行效率进行对比
- 《用户研究角度看设计》系列是淘宝的用户研究团队在可用性测试之后的点滴思考。在每次与淘宝用户的直接接触、观察用户的操作之后,作为体验分析师的我
- 今天我去隽辰的博客去看他的文章,在读完他的文章之后,我很自然的就去读网友们给他留的评论,在读的时候我发现他的评论是顺序的,也就是最早的评论在
- 之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Pyth
- 本文实例讲述了PHP实现ASCII码与字符串相互转换的方法。分享给大家供大家参考,具体如下:<?phpclass ascii { &n
- 元素浮动导致的问题及解决办法大家都应该很熟悉了,举个简单的例子:<style type="text/css">
- 疑问在调用socket的时候,我们会使用到listen()函数,里面有个参数叫backlog, 例如:socket.listen(5). 那
- 见以下两个文件:showimage.asp Change the HTTP header
- 这个主要应用于,获取用户输入的时候,防止用户不小心,多输入了一个空格,导致验证无法通过,多用于用户名跟密码的,好多情况下,大家复制的winr
- 数字函数 ABS():求绝对值。 CEILING():舍入到最大整数。 FLOOR():舍入到最小整数。 ROUND():四舍五入 ROUN
- JSON Schema是一个用于验证JSON数据结构的强大工具, 我查看并学习了JSON Schema的官方文档, 做了详细的记录, 分享一
- 本文实例讲述了Python常见MongoDB数据库操作。分享给大家供大家参考,具体如下:MongoDB 是一个基于分布式文件存储的数据库。由
- 下面对实现页面定时跳转(也称倒计时跳转)做一下总结,各种定时跳转代码记录如下: (1)使用setTimeout函数实现定时跳转(如下代码要写