PyQt簡單抽獎工具

公司年會氯庆,需要一個非常簡單的抽獎工具蹭秋,因為我的電腦是windows系統(tǒng),年會要在同事的Mac上面使用堤撵,考慮到開發(fā)的便捷性和跨平臺特性仁讨,用Python是最好的選擇。
1实昨、獲取抽獎名單洞豁。我拿到的人員名單在一個excel表格中,使用openpyxl或者xlrd庫可以很容易讀到所有的人名荒给,放入一個集合set或者列表list即可丈挟。

名單.png

2、抽獎邏輯:每次點擊開始抽獎時志电,都會把抽獎名單打亂曙咽。使用定時器,每隔一段時間挑辆,例如50ms例朱,依據打亂的名單列表,按照索引不斷修改文本框中的人名鱼蝉,點擊停止時停止定時器洒嗤,文本框中的人名就不會再變化,這時顯示的人名即為中獎者魁亦。然后渔隶,將已經中獎的人名從列表中刪掉,確保下次抽獎時不會重復中獎洁奈。
顯示界面:
抽獎效果

3间唉、主要代碼如下。顯示的界面可以用qtDesigner畫出來睬魂,再用pyuic自動生成界面代碼终吼。代碼在windows系統(tǒng)和蘋果Mac上面都可以直接運行,只是字體顯示稍有不同氯哮。

#!/usr/bin/env python3
from xlrd  import open_workbook
from lottery_draw import Ui_MainForm
import sys
import random
import time
import os.path
from PyQt5.QtCore import QThread, QTimer
from PyQt5 import QtCore, QtGui, QtWidgets

NAME_SET = set()

def get_all_names():
    p_path = os.path.split(os.path.realpath(__file__))[0]
    table = open_workbook(p_path + '/抽獎名單.xlsx').sheet_by_index(1)
    for cell in table.col_values(0):
        if not cell:
            break
        NAME_SET.add(cell.strip())        

class Py_Select(Ui_MainForm, QtWidgets.QWidget):
    def __init__(self):
        super(Py_Select, self).__init__()
        self.setupUi(self)
        self.init()
        self.setWindowTitle("抽獎工具")

    def init(self):
        get_all_names()
        self.name_list = list(NAME_SET)
        self.boxNames.setText('')
        self.btnStart.clicked.connect(self._start) 
        self.btnStop.clicked.connect(self._stop)
        self.index = 0
        self.timer = None

    def _start(self):
        self.btnStart.setHidden(True)
        self.btnStop.setHidden(False)
        self.name_list = list(NAME_SET)
        random.seed(int(time.time()))
        random.shuffle(self.name_list)

        if not self.timer:
            self.timer = QTimer()
        self.timer.timeout.connect(self._range_name)
        self.timer.start(50)

    def _range_name(self):
        self.index += 1
        if self.index >= len(self.name_list):
            self.index = 0
        self.boxNames.setText(self.name_list[self.index])

    def _stop(self):       
        if self.timer:
            self.timer.stop()
            NAME_SET.discard(self.boxNames.text().strip())
        self.btnStart.setHidden(False)
        
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    myshow = Py_Select()
    myshow.show()
    sys.exit(app.exec_())
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末际跪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子喉钢,更是在濱河造成了極大的恐慌姆打,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肠虽,死亡現(xiàn)場離奇詭異幔戏,居然都是意外死亡,警方通過查閱死者的電腦和手機税课,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門闲延,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痊剖,“玉大人,你說我怎么就攤上這事垒玲÷侥伲” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵合愈,是天一觀的道長叮贩。 經常有香客問我,道長佛析,這世上最難降的妖魔是什么益老? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮寸莫,結果婚禮上捺萌,老公的妹妹穿的比我還像新娘。我一直安慰自己储狭,他們只是感情好互婿,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辽狈,像睡著了一般慈参。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刮萌,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天驮配,我揣著相機與錄音,去河邊找鬼着茸。 笑死壮锻,一個胖子當著我的面吹牛,可吹牛的內容都是我干的涮阔。 我是一名探鬼主播猜绣,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敬特!你這毒婦竟也來了掰邢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤伟阔,失蹤者是張志新(化名)和其女友劉穎辣之,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體皱炉,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡怀估,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片多搀。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡歧蕉,死狀恐怖,靈堂內的尸體忽然破棺而出康铭,到底是詐尸還是另有隱情廊谓,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布麻削,位于F島的核電站,受9級特大地震影響春弥,放射性物質發(fā)生泄漏呛哟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一匿沛、第九天 我趴在偏房一處隱蔽的房頂上張望扫责。 院中可真熱鬧,春花似錦逃呼、人聲如沸鳖孤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苏揣。三九已至,卻和暖如春推姻,著一層夾襖步出監(jiān)牢的瞬間平匈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工藏古, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留增炭,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓拧晕,卻偏偏與公主長得像隙姿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子厂捞,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容