怎么在Python中利用Tkinter实现一个转盘抽奖器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>一、使用Tkinter实现滚动抽奖器的步骤强>
<强> 1。界面搭建强>
首先需要搭建一个简单的GUI界面,效果如下图(参考)。
首先创建一个大小适合的窗口,使用,Tkinter.Tk()方法创建并返回一个窗口对象窗口。
使用窗口对象的,几何(widthxheight + x + y)方法设置窗口的大小,几何()方法中的参数格式为widthxheight + x + y,如& # 39;500 x290 + 250 + 150 & # 39;,宽度是窗口的宽度,高度是窗口的高度,中间使用乘号连接,如果敲不出这个符号,可以去源码中复制,x和,用于设置窗口离电脑屏幕左上角的距离。
<强> 2。设置转盘的内容强>
使用转盘抽奖时,点击开始后,转到不同方向对应不同的奖品种类,所以要设置每个方向显示不同的内容。
使用,Tkinter中,的,标签类,实例化标签的对象来显示文字。
实例化标签时,第一个参数必须是Tkinter窗口对象窗口,然后通过文本设置显示的内容。每个,标签显示的内容都是固定不变的,所以可以一开始就写死,然后使用关键字参数的方式,根据需要设置显示框大小,背景颜色,显示字体等,再通过,标签对象的,地方()方法设置它相对于窗口左上角的位置。
在这个转盘抽奖器中,我分了8个不同的方向,8个区域,所以需要8个,标签。在这8个标签中,除了显示的内容和位置不一样,其他的设置都是一样的,所以将添加标签的步骤封装成一个函数,创建标签时更方便。
<强> 3。设置开始按钮强>
在界面中,需要一个“开始”按钮,用来开始抽奖。转盘抽奖是点击开始后,抽奖界面开始转动,速度由快到慢,直到自动停止,最后停止的区域就是中奖的区域,所以不用“停止”按钮。
使用,Tkinter中,的,按钮类,实例化,按钮的对象来创建“开始”按钮。
实例化按钮时,第一个参数也必须是Tkinter窗口对象窗口,然后根据需要设置按钮大小,背景颜色,显示字体等,最后还是使用的地方()方法设置它相对于的窗口左上角的位置。
当点击按钮时,开始抽奖,定义好处理抽奖逻辑的函数,用匿名函数的方式传给,按钮中的,命令,将点击按钮和抽奖逻辑处理函数关联到一起。
<强>二、抽奖器代码实现和效果展示强>
按照上面分析的步骤依次实现,完整代码如下。
#,编码为utf - 8 import 系统 if sys.version_info [0],==, 2: import Tkinter ,得到Tkinter import * 其他: ,import tkinter as  Tkinter ,得到tkinter import * import 随机 , is_run =False , , def lottery_whirl(数据,,我,,号码): global is_run ,if 小姐:==,0: j =, 0 ,其他的:=,j 小姐:%,8 ,数据[j - 1] [& # 39; bg # 39;],=, & # 39; # CCCCCC& # 39; ,数据[j] [& # 39; bg # 39;],=, & # 39; # 00 cd00& # 39;=,wait [a for  a 拷贝范围(100,,300,,10)),+,[b for  b 拷贝范围(300,,600,,300,//,(28号))),+ \ ,[c for c 拷贝范围(600,,1200,,120)),+,[d for  d 拷贝范围(1200,,1800,,200)) 小姐,if & lt;,号码: ,window.after (lottery_whirl,等待(我),数据,,小姐:+,1,编号) ,其他的: ,is_run =False , , def lottery_start(数据): global is_run ,if is_run: ,返回 is_run =, True ,for x 拷贝范围(len(数据),安康;1): 数据,[x] [& # 39; bg # 39;],=, & # 39; # CCCCCC& # 39;=,,number  random.randint(30日,53) ,lottery_whirl(数据,,0,,数量) , , def create_label(名字,,x,, y):=,label 标签(文本窗口,,=名字,,宽度=13日,身高=3,,bg=& # 39; # CCCCCC& # 39;,,字体=& # 39;宋体,-18,大胆# 39;) ,NW, label.place(锚=x=x, y=y) return 标签 , , if __name__ ==, & # 39; __main__ # 39;:=,,window  Tkinter.Tk () 500年,window.geometry (& # 39; x290 + 250 + 150 & # 39;) ,window.title(& # 39;,转,盘,抽,奖,器& # 39;) ,=,bg_label 标签(窗口,宽度=80,,身高=24日,bg=& # 39; # ECf5FF& # 39;) ,NW, bg_label.place(锚=x=0, y=0) ,=,,label1  create_label(& # 39;风清扬& # 39;,,20日,20)=,,label2  create_label(& # 39;北丐& # 39;,,180年,20)=,,label3  create_label(& # 39;无崖子& # 39;,,340年,20)=,,label4  create_label(& # 39;西毒& # 39;,,20日,110)=,,label5  create_label(& # 39;东邪& # 39;,,340,,110)=,,label6  create_label(& # 39;扫地僧& # 39;,,20日,200)=,,label7  create_label(& # 39;南帝& # 39;,,180,,200)=,,label8  create_label(& # 39;张三丰& # 39;,,340,,200) (label1, data =,,, label2,, label3,, label5,, label8,, label7,, label6,, label4]=,button_core 按钮(文本窗口,,=& # 39;开,始& # 39;,,命令=λ:,lottery_start(数据),宽度=130,,身高=53岁,bg=& # 39; # 00 cd00& # 39;, 字体才能=& # 39;宋体,-18,大胆# 39;,,位图=& # 39;gray50& # 39;,,复合=Tkinter.CENTER) ,NW, button_core.place(锚=x=180, y=110) null怎么在Python中利用Tkinter实现一个转盘抽奖器