Python开发转盘小游戏
Python开发转盘小游戏
Python
一 原理分析
- Python开发一个图形界面
- 有12个选项和2个功能键
- 肯定每一个按钮的位置
每一个按钮的间隔相同
- 点击开始时转动,当前选项的背景颜色为红色,其余为白色
二 知识点与难点
2.1 使用的package
- tkinter
Python内置,实现GUI的主要package
- threading
实现多线程实现循环
- time
用来延时
2.2 注意点
- 判断类型时使用isinstance函数,不要用type,由于type不区分子类
- 判断变量是否为TRUE,FALSE,None时要用is不要用==
- 循环时记得处理自增时超过下标时的归零
- tkinter下面的按钮属性能够经过键值赋值改变属性
- 全局变量
三 代码
- import tkinter
- import threading
- import time
-
- 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)
-
-
- herolist = [btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12]
-
-
- isloop = False
-
-
- isstop = False
-
-
- stopid = None
-
-
- def round():
-
-
- global isloop
- global stopid
-
-
- i = 1
-
-
- if isloop is True:
- return
-
- if isinstance(stopid, int):
- i = stopid
-
-
- while True:
-
-
- time.sleep(0.03)
-
-
-
- for e_btn in herolist:
- e_btn['bg'] = 'white'
-
-
- herolist[i]['bg'] = 'red'
-
- i += 1
- print('当前i为', i)
-
-
- if i >= 12:
- i = 0
-
-
- if isstop is True:
- isloop = False
- stopid = i
- break
-
-
- def my_stop():
-
- global isstop
-
-
- if isstop is True:
- return
-
- isstop = True
-
-
- def newtask():
-
- global isloop
- global isstop
-
- isstop = False
-
-
- t = threading.Thread(target=round)
-
- t.start()
-
-
- isloop = True
-
-
- btn_start = tkinter.Button(root, text='开始', command=newtask)
- btn_start.place(x=90, y=125, width=50, height=50)
-
-
- btn_stop = tkinter.Button(root, text='中止', command=my_stop)
- btn_stop.place(x=160, y=125, width=50, height=50)
-
- root.mainloop()

欢迎关注本站公众号,获取更多信息