抽獎程式

''' 抽獎程式 使用時可以修改嘉賓名單,然后單機‘開始’和‘停止’按鈕 來控制界面上名單的滾動實作抽獎功能,涉及的模塊主要 有多執行緒 ''' 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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542129.html
標籤:其他
上一篇:跟我學Python丨影像增強及運算:區域直方圖均衡化和自動色彩均衡化處理
下一篇:學習筆記——Spring管理第三方bean;Spring中Bean的作用域;Spring中Bean的生命周期;Spring中bean的后置處理器;Spring中自動裝配
