最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Tkinter實現(xiàn)滾動抽獎器效果

 更新時間:2020年01月06日 13:30:02   作者:Python碎片  
Tkinter 是 Python 的標準 GUI(Graphical User Interface,圖形用戶接口)庫,Python 使用 Tkinter 可以快速地創(chuàng)建 GUI 應用程序。這篇文章主要介紹了Python使用Tkinter實現(xiàn)滾動抽獎器,需要的朋友可以參考下

年底,抽獎這個話題很多人都會討論,都希望可以中獎。

接下來我就使用 Python 中的 Tkinter 模塊來實現(xiàn)一個簡單的滾動抽獎器。

一、Tkinter簡介

Tkinter 是 Python 的標準 GUI(Graphical User Interface,圖形用戶接口)庫,Python 使用 Tkinter 可以快速地創(chuàng)建 GUI 應用程序。

在 Python2 和 Python3 中,Tkinter 都在標準庫中,無需安裝即可使用。在 Python2 中,這個庫叫 Tkinter ,在 Python3 中,這個庫叫 tkinter ,首字母大小寫不相同,在導包時需要注意。

雖然 Python 的官網(wǎng)已經(jīng)宣布,2020年4月,Python2 會退休,但是在很多公司,依然在使用 Python2 ,所以本文的代碼也會兼容 Python2 和 Python3 。

Tkinter 提供了非常豐富的圖形界面功能,實現(xiàn)一個抽獎器,只需要用到里面很少的一部分功能。

二、使用Tkinter實現(xiàn)滾動抽獎器的步驟

1. 界面搭建

首先需要搭建一個簡單的 GUI 界面,效果如下圖(參考)。

首先創(chuàng)建一個大小適合的窗口,使用 Tkinter.Tk() 方法即可創(chuàng)建并返回一個窗口對象 window(自定義的對象名)。

使用 window 對象的 geometry(widthxheight+x+y) 方法來設(shè)置窗口的大小,geometry() 方法中的參數(shù)必須按照格式傳入才行,參數(shù)格式為 widthxheight+x+y,如 '405x320+250+15',width 是窗口的寬度,height 是窗口的高度,中間使用乘號連接,如果敲不出這個符號,可以去源碼中復制,x 和 y 用于設(shè)置窗口離電腦屏幕左上角的距離。

2. 設(shè)置文字顯示框

抽獎時,要在界面上快速地滾動顯示當前的中獎者姓名,所以要設(shè)置一個文字顯示框。

使用 Tkinter 中的 Label 類(不一定用 Label ,實現(xiàn)方法有很多),實例化 Label 的對象來顯示文字,充當顯示框。Label 標簽默認不可點擊不可選中也不可編輯,用來顯示比較少的內(nèi)容(人名)是比較適合的。

要設(shè)置 Label 顯示的文字,需要實例化一個 StringVar 類的對象,使用 StringVar 中的 value 傳入初始顯示的內(nèi)容。在 Label 中 將 StringVar 對象傳給 textvariable ,這樣 Label 和 StringVar 就一一對應起來了。

實例化 Label 時,第一個參數(shù)必須是 Tkinter 窗口對象 window,然后使用關(guān)鍵字參數(shù)的方式,根據(jù)需要設(shè)置顯示框大小,背景顏色,顯示字體等,再通過 Label 對象的 place() 方法設(shè)置它相對于窗口左上角的位置。

需要多個 Label 時,如法炮制。

3. 設(shè)置按鈕

在界面中,需要兩個按鈕,一個“開始”按鈕,一個“結(jié)束”按鈕,用來控制抽獎的開始和停止。(當然也可以設(shè)置成同一個按鈕,實現(xiàn)方法也差不多)

使用 Tkinter 中的 Button 類,實例化 Button 的對象來創(chuàng)建按鈕。

實例化 Button 時,第一個參數(shù)也必須是 Tkinter 窗口對象 window,然后根據(jù)需要設(shè)置按鈕大小,背景顏色,顯示字體等,最后還是使用 place() 方法設(shè)置它相對于的窗口左上角的位置。

當點擊按鈕時,抽獎器要開始抽獎或結(jié)束抽獎,也就是說點擊按鈕時,要觸發(fā)某件事。觸發(fā)的事件可以使用函數(shù)來實現(xiàn),然后用匿名函數(shù)的方式傳給 Button 中的 command ,將點擊按鈕和事件處理關(guān)聯(lián)到一起。

三、抽獎器代碼實現(xiàn)和效果展示

根據(jù)上面的簡單分析,代碼按步驟依次來實現(xiàn),完整代碼如下。

# coding=utf-8
import sys
if sys.version_info[0] == 2:
  import Tkinter
  from Tkinter import *
else:
  import tkinter as Tkinter
  from tkinter import *
import random
data = ['風清揚', '無崖子', '東邪', '西毒', '南帝', '北丐']
going = True
is_run = False
def lottery_roll(var1, var2):
  global going
  show_member = random.choice(data)
  var1.set(show_member)
  if going:
    window.after(50, lottery_roll, var1, var2)
  else:
    var2.set('恭喜 {} ?。?!'.format(show_member))
    going = True
    return
def lottery_start(var1, var2):
  global is_run
  if is_run:
    return
  is_run = True
  var2.set('幸運兒是你嗎。。。')
  lottery_roll(var1, var2)
def lottery_end():
  global going, is_run
  if is_run:
    going = False
    is_run = False
if __name__ == '__main__':
  window = Tkinter.Tk()
  window.geometry('405x320+250+15')
  window.title('   滾 動 抽 獎 器')
  bg_label = Label(window, width=70, height=24, bg='#ECf5FF')
  bg_label.place(anchor=NW, x=0, y=0)
  var1 = StringVar(value='即 將 開 始')
  show_label1 = Label(window, textvariable=var1, justify='left', anchor=CENTER, width=17, height=3, bg='#BFEFFF',
            font='楷體 -40 bold', foreground='black')
  show_label1.place(anchor=NW, x=21, y=20)
  var2 = StringVar(value='幸運兒是你嗎。。。')
  show_label2 = Label(window, textvariable=var2, justify='left', anchor=CENTER, width=38, height=3, bg='#ECf5FF',
            font='楷體 -18 bold', foreground='red')
  show_label2.place(anchor=NW, x=21, y=240)
  button1 = Button(window, text='開始', command=lambda: lottery_start(var1, var2), width=14, height=2, bg='#A8A8A8',
           font='宋體 -18 bold')
  button1.place(anchor=NW, x=20, y=175)
  button2 = Button(window, text='結(jié)束', command=lambda: lottery_end(), width=14, height=2, bg='#A8A8A8',
           font='宋體 -18 bold')
  button2.place(anchor=NW, x=232, y=175)
  window.mainloop()

代碼中主要是按照創(chuàng)建窗口,創(chuàng)建顯示框,創(chuàng)建按鈕,編寫抽獎函數(shù)等步驟來實現(xiàn)。

有一個點需要注意一下,當?shù)谝淮纬楠勥€沒有(點擊)結(jié)束時,如果點了第二次(或很多次)抽獎,會有多次抽獎并行運行,點結(jié)束時,無法使抽獎器正常結(jié)束,甚至造成程序出錯。所以在代碼中設(shè)置了兩個全局變量 going 和 is_run,分別表示是否可以繼續(xù)滾動(遞歸)顯示下一個名額和當前抽獎器是否在運行,通過它們控制同時只有一次抽獎在運行。

最后的抽獎器效果如下:

這個程序可以用于抽獎,還可以用于點名等,不同使用場景只需要簡單修改就可以了。

總結(jié)

以上所述是小編給大家介紹的Python使用Tkinter實現(xiàn)滾動抽獎器效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • python用列表生成式寫嵌套循環(huán)的方法

    python用列表生成式寫嵌套循環(huán)的方法

    今天小編就為大家分享一篇python用列表生成式寫嵌套循環(huán)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 使用matplotlib.pyplot繪制多個圖片和圖表實現(xiàn)方式

    使用matplotlib.pyplot繪制多個圖片和圖表實現(xiàn)方式

    這篇文章主要介紹了使用matplotlib.pyplot繪制多個圖片和圖表的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python讀取多層嵌套文件夾中的文件實例

    python讀取多層嵌套文件夾中的文件實例

    今天小編就為大家分享一篇python讀取多層嵌套文件夾中的文件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python 循環(huán)語句之 while,for語句詳解

    Python 循環(huán)語句之 while,for語句詳解

    Python中有兩種循環(huán),分別為:for循環(huán)和while循環(huán)。 for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。while 語句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復處理的相同任務。
    2018-04-04
  • 利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實例代碼

    利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實例代碼

    這篇文章主要介紹了利用python+ffmpeg合并B站視頻及格式轉(zhuǎn)換的實例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • python實現(xiàn)通訊錄管理系統(tǒng)

    python實現(xiàn)通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細介紹了python實現(xiàn)通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Linux永久修改pip配置源的詳細過程

    Linux永久修改pip配置源的詳細過程

    默認情況下pip使用的是國外的鏡像,在下載的時候速度非常慢,所以需要更換PIP的鏡像源,下面這篇文章主要給大家介紹了關(guān)于Linux永久修改pip配置源的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • 利用python實現(xiàn)可視化大屏

    利用python實現(xiàn)可視化大屏

    這篇文章主要介紹了利用python實現(xiàn)可視化大屏,文章圍繞主題展開對如何利用python實現(xiàn)可視化大屏,需要的小伙伴可以參考一下,希望對你的學習和工作有所幫助
    2022-03-03
  • Python利用腳本實現(xiàn)自動發(fā)送電子郵件

    Python利用腳本實現(xiàn)自動發(fā)送電子郵件

    這篇文章主要為大家詳細介紹了Python如何利用腳本實現(xiàn)自動發(fā)送電子郵件功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-01-01
  • Python中Tkinter組件Button的具體使用

    Python中Tkinter組件Button的具體使用

    Button=組件用于實現(xiàn)各種各樣的按鈕,本文主要介紹了Python中Tkinter組件Button的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2022-01-01

最新評論

上杭县| 舒城县| 木里| 阜城县| 云梦县| 黑水县| 郎溪县| 商南县| 旅游| 大港区| 三河市| 广丰县| 额敏县| 万盛区| 耿马| 阿鲁科尔沁旗| 闸北区| 静安区| 鄂尔多斯市| 合山市| 繁昌县| 明溪县| 浦东新区| 济南市| 揭西县| 慈溪市| 安溪县| 峨边| 四川省| 双峰县| 德惠市| 临潭县| 乌恰县| 宁陵县| 蛟河市| 德保县| 新昌县| 贵德县| 老河口市| 卢湾区| 和平区|