抽獎程式 ''' 抽獎程式 使用時可以修改嘉賓名單,然後單機‘開始’和‘停止’按鈕 來控制界面上名單的滾動實現抽獎功能,涉及的模塊主要 有多線程 ''' 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()