PyQt5抽奖系统
程序运行截图
抽奖系统代码
该系统使用PyQt5
模块以及openpyxl
模块开发,需要使用pip
安装导入PyQt5
模块和openpyxl
模块
import random, sys
from PyQt5.QtWidgets import QWidget, QFormLayout, QLineEdit, QVBoxLayout, QApplication, QPushButton, QDesktopWidget
from PyQt5.QtCore import pyqtSignal, QTimer
from openpyxl import load_workbook
NAME = [] #获奖用户名
TEL = [] #获奖用户电话
EXCEL_PATH = "./抽奖名单.xlsx"
'''抽奖窗口程序'''
class Lucky(QWidget):
def __init__(self, parent=None):
super(Lucky, self).__init__(parent=parent)
self.status = False
self.numTimer = QTimer() # 创建一个定时器
self.numTimer.timeout.connect(self.num_timer_out) # 定时器超时触发函数
self.nameLine = QLineEdit()
self.telLine = QLineEdit()
self.luckyBtn = QPushButton('开始抽奖')
self.luckyBtn.clicked.connect(self.startTimer) # 抽奖按钮连接槽函数
self.formLayout = QFormLayout()
self.formLayout.addRow('获奖名字', self.nameLine)
self.formLayout.addRow('电话号码', self.telLine)
self.vbox = QVBoxLayout()
self.vbox.addLayout(self.formLayout)
self.vbox.addWidget(self.luckyBtn)
self.setLayout(self.vbox)
self.show()
def startTimer(self): #定时器函数
self.status = ~self.status # 取反
if self.status:
self.numTimer.start(1) #开启定时器并设置超时时间为1毫秒
self.luckyBtn.setText('停止抽奖') # 停止计时器
else:
self.numTimer.stop()
self.luckyBtn.setText('开始抽奖') # 开启计时器
def num_timer_out(self): #定时器超时处理事件函数
self.num = random.randint(1,2) #抽奖核心代码,从1到2中随机生成一个数字num
self.nameLine.setText(NAME[self.num]) #抽取姓名列中的第num行
self.telLine.setText(str(TEL[self.num])) #抽取电话列中的第num行
def read_excel(path): #抽奖名单获取函数
luckyData = load_workbook(path) #读取Excel表格
luckyTable = luckyData[luckyData.sheetnames[0]] #获取第一个工作表
for luckyRow in luckyTable.iter_rows(min_row=1): #从第一行开始遍历所有行
NAME.append(luckyRow[1].value) # 获取第1列的值
TEL.append(luckyRow[2].value) # 获取第2列的值
def center(window): #窗口居中函数
screenSize = QDesktopWidget().screenGeometry() #获取显示屏幕大小
windowSize = window.geometry() #获取当前窗口大小
newLeft = int((screenSize.width() - windowSize.width()) / 2)
newTop = int((screenSize.height() - windowSize.height()) / 2)
window.move(newLeft, newTop)
if __name__ == "__main__":
read_excel(EXCEL_PATH)
app = QApplication(sys.argv)
draw = Lucky()
draw.setWindowTitle("XX抽奖系统") #抽奖系统窗口名称
draw.resize(400, 400)
center(draw)
sys.exit(app.exec_())
抽奖数据格式
创建一个Excel表格,按照以下格式填入抽奖人信息,并将该表格放到和代码同一目录下
序号 | 姓名 | 电话 |
---|---|---|
1 | 张三 | 15011111111 |
2 | 李四 | 15022222222 |