代码实例:
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
i = 0
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()
运行结果
Python 基础小项目(3)----水果转盘(GUI编程)
猜你喜欢
转载自blog.csdn.net/qq_29750461/article/details/81320237
今日推荐
周排行