Python實現抽獎程式

来源:https://www.cnblogs.com/buchijiuminvhai/archive/2023/01/17/17058049.html
-Advertisement-
Play Games

抽獎程式 ''' 抽獎程式 使用時可以修改嘉賓名單,然後單機‘開始’和‘停止’按鈕 來控制界面上名單的滾動實現抽獎功能,涉及的模塊主要 有多線程 ''' import itertools import random import threading import time import tkinte ...


抽獎程式

 

 

'''
抽獎程式
使用時可以修改嘉賓名單,然後單機‘開始’和‘停止’按鈕
來控制界面上名單的滾動實現抽獎功能,涉及的模塊主要
有多線程
'''
import itertools
import random
import threading
import time
import tkinter
import tkinter.messagebox

root = tkinter.Tk()
#視窗標題
root.title('隨機提問')
root.geometry('260x180+400+300')
#不允許改變視窗大小
root.resizable(False,False)
#關閉程式時,執行的函數代碼,停止滾動顯示學生名單
def closeWindow():
    root.flag = False
    time.sleep(0.1)
    root.destroy()
root.protocol('VM_DELETE_WINDOW',closeWindow)
#模擬學生名單,可以加上資料庫訪問介面,從資料庫中讀取學生名單
student = ['張三','李四','王五','趙六','周七','錢八']
#變數,用來控制是否滾動顯示學生名單
root.flag = False
def switch():
    root.flag = True
    #隨機打亂學生名單
    t = student[:]
    random.shuffle(t)
    t = itertools.cycle(t)

    while root.flag:
        #滾動顯示
        lbFirst['text'] = lbSecond['text']
        lbSecond['text'] = lbThird['text']
        lbThird['text'] = next(t)
        #數字可以修改,控制滾動速度
        time.sleep(0.1)
def btnStartClick():
    #每次單機‘開始’按鈕啟動新線程,並禁用開始按鈕,啟動停止按鈕
    t = threading.Thread(target=switch)
    t.start()
    btnStart['state'] = 'disabled'
    btnStop['state'] = 'normal'
btnStart = tkinter.Button(root,text='開始',command=btnStartClick)
btnStart.place(x=30,y=10,width=80,height=20)
def btnStopClick():
    #單機停按鈕結束滾動顯示,彈窗提示中將名單,修改按鈕狀態
    root.flag = False
    time.sleep(0.3)
    tkinter.messagebox.showinfo('恭喜','本次中獎:'+lbSecond['text'])
    btnStart['state'] = 'normal'
    btnStop['state'] = 'disabled'
btnStop = tkinter.Button(root,text='',command=btnStopClick)
btnStop['state'] = 'disabled'
btnStop.place(x=150,y=10,width=80,height=20)
#用來滾動顯示學生名單的3個Label組件
#可以根據需求添加Label組件的數量,但是要修改上面的代碼函數代碼
lbFirst = tkinter.Label(root,text='')
lbFirst.place(x=80,y=60,width=100,height=20)
#紅色Label組件,表示中獎名單
lbSecond = tkinter.Label(root,text='')
lbSecond['fg'] = 'red'
lbSecond.place(x=80,y=90,width=100,height=20)

lbThird = tkinter.Label(root,text='')
lbThird.place(x=80,y=120,width=100,height=20)
#啟動tkinter主程式
root.mainloop()

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據類型的內置方法 什麼是數據類型的內置方法? ​ ==數據類型自帶的操作方法或功能== 調用數據類型的內置的方法的方式是: ​ ==句點符== 數據類型.方法名() eg: 變數名.方法名() 數據值.方法名() 1.整型相關操作方法 類型轉換 int(待轉換的數據類型) 1.浮點型可以轉整型 ' ...
  • 下載jdk安裝包 進入Oracle官網進行下載:Java Downloads | Oracle 鏡像源也可以下載 為什麼配置環境變數 系統在運行命令和程式的時候先從當前目錄進行查找,找不到會去配置的環境變數裡面找 配置環境變數的目的是為了命令行在各個位置都能訪問 平時用IDEA集成開發工具不非得配置 ...
  • 1 簡介 DB2是IBM的一款優秀的關係型資料庫,簡單學習一下。 2 Docker安裝DB2 為了快速啟動,直接使用Docker來安裝DB2。先下載鏡像如下: docker pull ibmcom/db2:11.5.0.0 啟動資料庫如下: docker run -itd \ --name mydb ...
  • Spring管理Bean-IOC-02 2.基於XML配置bean 2.7通過util空間名稱創建list BookStore.java: package com.li.bean; import java.util.List; /** * @author 李 * @version 1.0 */ pu ...
  • Spring6 Spring項目的創建 打開IDEA,新建一個maven項目 在maven項目中引入spring的倉庫和依賴 <repositories> <repository> <id>repository.spring.milestone</id> <name>Spring Milestone ...
  • 2023-01-17 一、Spring中的註解 1、使用註解的原因 (1)使用註解將對象裝配到IOC容器中 (2)使用註解管理對象之間依賴關係(自動裝配) 2、Spring中裝配對象的註解 (1)@Component 標識一個受Spring IOC容器管理的普通組件 (2)@Repository 標 ...
  • 好久沒有更新文章了,高齡開發沒什麼技術,去了外包公司後沒怎麼更新文章了。今天分享下統一處理starter,相信開發web系統的時候都是會涉及到前後端的交互,而後端返回數據的時候一般都會統一封裝一個返回對象和統一處理異常,一般情況下都是在controller的每個方法中調用封裝的對象,把相應的數據塞到 ...
  • 2023-01-17 一、Spring管理druid步驟 (1)導入jar包 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <arti ...
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...