怎么在Python中利用Tkinter实现一个转盘抽奖器

  介绍

怎么在Python中利用Tkinter实现一个转盘抽奖器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>一、使用Tkinter实现滚动抽奖器的步骤

<强> 1。界面搭建

首先需要搭建一个简单的GUI界面,效果如下图(参考)。

怎么在Python中利用Tkinter实现一个转盘抽奖器

首先创建一个大小适合的窗口,使用,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实现一个转盘抽奖器