如何在Python中使用Tkinter实现一个滚动抽奖器效果

  介绍

如何在Python中使用Tkinter实现一个滚动抽奖器效果?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>一、Tkinter简介

Tkinter是Python的标准的GUI(图形用户界面,图形用户接口)库,Python使用Tkinter可以快速地创建GUI应用程序。

在Python2和Python3中,Tkinter都在标准库中,无需安装即可使用。在Python2中,这个库叫Tkinter,在Python3中,这个库叫,Tkinter,首字母大小写不相同,在导包时需要注意。

虽然,Python的官网已经宣布,2020年4月,Python2会退休,但是在很多公司,依然在使用Python2,所以本文的代码也会兼容Python2和Python3。

Tkinter提供了非常丰富的图形界面功能,实现一个抽奖器,只需要用到里面很少的一部分功能。

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

1。界面搭建

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

如何在Python中使用Tkinter实现一个滚动抽奖器效果

首先创建一个大小适合的窗口,使用,Tkinter.Tk()方法即可创建并返回一个窗口对象窗口(自定义的对象名)。

使用窗口对象的,几何(widthxheight + x + y)方法来设置窗口的大小,几何()方法中的参数必须按照格式传入才行,参数格式为widthxheight + x + y,如& # 39;405 x320 + 250 + 15 & # 39;,宽度是窗口的宽度,高度是窗口的高度,中间使用乘号连接,如果敲不出这个符号,可以去源码中复制,x和,用于设置窗口离电脑屏幕左上角的距离。

2。设置文字显示框

抽奖时,要在界面上快速地滚动显示当前的中奖者姓名,所以要设置一个文字显示框。

使用,Tkinter中,的,标签类(不一定用标签,实现方法有很多),实例化标签的对象来显示文字,充当显示框.Label标签默认不可点击不可选中也不可编辑,用来显示比较少的内容(人名)是比较适合的。

要设置标签显示的文字,需要实例化一个,StringVar 类的对象,使用StringVar中传的值入初始显示的内容。在,标签中将StringVar对象传给textvariable,这样标签和StringVar就一一对应起来了。

实例化标签时,第一个参数必须是Tkinter窗口对象窗口,然后使用关键字参数的方式,根据需要设置显示框大小,背景颜色,显示字体等,再通过,标签对象的,地方()方法设置它相对于窗口左上角的位置。

需要多个标签时,如法炮制。

3。设置按钮

在界面中,需要两个按钮,一个“开始”按钮,一个“结束”按钮,用来控制抽奖的开始和停止。(当然也可以设置成同一个按钮,实现方法也差不多)

使用,Tkinter中,的,按钮类,实例化,按钮的对象来创建按钮。

实例化按钮时,第一个参数也必须是Tkinter窗口对象窗口,然后根据需要设置按钮大小,背景颜色,显示字体等,最后还是使用的地方()方法设置它相对于的窗口左上角的位置。

当点击按钮时,抽奖器要开始抽奖或结束抽奖,也就是说点击按钮时,要触发某件事。触发的事件可以使用函数来实现,然后用匿名函数的方式传给,按钮中的,命令,将点击按钮和事件处理关联到一起。

<强>三、抽奖器代码实现和效果展示

根据上面的简单分析,代码按步骤依次来实现,完整代码如下。

#,编码为utf - 8   import 系统   if  sys.version_info [0],==, 2:   import  Tkinter才能   得到才能Tkinter  import  *   其他:   import 才能tkinter  as  Tkinter   得到才能tkinter  import  *   import 随机   data =,(& # 39;风清扬& # 39;,,& # 39;无崖子& # 39;,,& # 39;东邪& # 39;,,& # 39;西毒& # 39;,,& # 39;南帝& # 39;,,& # 39;北丐& # 39;】   going =,真的   is_run =False   def  lottery_roll (var1, var2):   global 才能走了   时间=show_member 才能;random.choice(数据)   var1.set才能(show_member)   if 才能;将:   ,,,window.after (lottery_roll, 50岁,还以为,var1, var2)   其他的才能:   ,,,var2.set(& # 39;恭喜,{},! ! ! & # 39;.format (show_member))   ,,,going =,真的   ,才能返回   def  lottery_start (var1, var2):   global  is_run才能   if 才能;is_run:   ,才能返回   is_run 才能=,真的   var2.set才能(& # 39;幸运儿是你吗……& # 39;)   lottery_roll才能(var1, var2)   def  lottery_end ():   global 才能,is_run   if 才能;is_run:   ,,,going =False   ,,,is_run =False   if  __name__ ==, & # 39; __main__ # 39;:   时间=window 才能;Tkinter.Tk ()   window.geometry才能(& # 39;405 x320 + 250 + 15 & # 39;)   window.title才能(& # 39;,,,滚,动,抽,奖,器& # 39;)   bg_label 才能=,标签(窗口,宽度=70,,身高=24日,bg=& # 39; # ECf5FF& # 39;)   bg_label.place才能(锚点=NW, x=0, y=0)   var1 才能=,StringVar (value=https://www.yisu.com/zixun/奔唇肌?   show_label1=标签(窗口、textvariable=var1证明=蟆?锚=中心、宽度=17岁身高=3,bg=' # BFEFFF ',   字体='楷体-40大胆,前景='黑色')   show_label1。(锚=NW, x=21, y=20)   var2=StringVar (value='幸运儿是你吗……)   show_label2=标签(窗口、textvariable=var2证明=蟆?锚=中心、宽度=38岁,身高=3,bg=' # ECf5FF ',   字体='楷体-18大胆,前景='红色')   show_label2。(锚=NW, x=21, y=240)   button1=按钮(窗口、文本='开始”,命令=λ:lottery_start (var1 var2),宽度=14岁身高=2,bg=' # A8A8A8 ',   字体='宋体-18大胆”)   button1。(锚=NW, x=20, y=175)   button2=按钮(窗口、文本='结束”,命令=λ:lottery_end(),宽度=14岁身高=2,bg=' # A8A8A8 ',   字体='宋体-18大胆”)   button2。(锚=NW, x=232, y=175)   window.mainloop ()

如何在Python中使用Tkinter实现一个滚动抽奖器效果