当前位置:首页>python>25.Python实战__模拟抽奖程序

25.Python实战__模拟抽奖程序

  • 2026-10-11 08:04:51
25.Python实战__模拟抽奖程序
    今天用Python来模拟一个抽奖程序,主要用到Python中一个random随机模块,一个计时器QTimer,运行效果如下:
一、random模块 常用的方法有下面几个:
1)random.random() 随机生成0~1之间的随机小数;
2)random.randint(a, b) 随机生成a~b之间的随机整数;
3) random.uniform(c, d) 随机生成c~d之间的随机小数;
4)random.choice(列表) 随机从列表中拿出一个元素;
二、QTimer( )计时器 用法如下:
1)需要先创建一个计时器;
2)用计时器timeout信号连接一个槽函数;
3)计时器开始并设置一个时间 A (ms),就是 每隔时间A  (ms) 执行一次槽函数;
三、代码的基本逻辑就是:
1)先创建一个“奖项列表”,用随机函数,来随机取出一个奖项;
2)创建一个按钮,当点击按钮时,连接一个槽函数,这个槽函数就是创建一个定时器,计时器再连接一个槽函数,定时器每隔一定时间执行一次这个槽函数;
3)槽函数就是每隔一定时间就更新一次标签的文本,展示一种动画滚动显示的效果;
4)2S后 定时器结束,结束滚动,显示一个随机奖项;
原代码如下:
一、先导入模块
from PySide6.QtCore import Qt, QTimerfrom PySide6.QtWidgets import QWidget, QApplication,      QPushButton, QGridLayout, QLineEdit, QLabelimport random
二、创建类
class Window(QWidget):      def __init__(self):          super().__init__()          # 设置窗口名称  self.setWindowTitle("抽奖")          # 设置窗口尺寸  self.resize(350, 150)          # 设置奖项列表  self.data = ["一 等奖", "二 等奖", "三 等奖", "四 等奖", "谢谢参与!"]      # 设置CSS样式          self.setStyleSheet(""" QLabel{   font-size:30px;  color: red; } """)          # 创建水平布局          self.main_lay = QGridLayout()          # 设置布局的内容边距  self.main_lay.setContentsMargins(30, 20, 20, 0)          # 设置水平布局主布局          self.setLayout(self.main_lay)          self.main_lay.setAlignment(Qt.AlignTop)          self.main_lay.setSpacing(20)          # 创建实例方法  self.setup_01()
二、创建实例方法setup_01
def setup_01(self):      # 创建展示标签,显示结果      self.label = QLabel()      # 随机取出一个奖项  text = random.choice(self.data)      # 创建按钮      self.btn = QPushButton("随机抽奖")      # 按钮连接槽函数 lottery      self.btn.clicked.connect(self.lottery)      # 设置文字居中      self.label.setAlignment(Qt.AlignmentFlag.AlignCenter)      # 把上面控件添加到网格布局中      self.main_lay.addWidget(self.label, 0, 0)      self.main_lay.addWidget(self.btn, 1, 0)
三、创建按钮的槽函数 lottery
def lottery(self):      # 创建一个定时器运行次数变量      self.counter = 0      # 创建一个定时器      self.timer = QTimer()      # 定时器开始后,触发timeout信号,连接 update_label 方法      self.timer.timeout.connect(self.update_label)      # 让定时器开始,每100ms 触发一次timeout信号      self.timer.start(100)
四、创建定时器的槽函数
def update_label(self):      # 每更新一次计数加 1      self.counter += 1      # 当更新到 30次时,即2000ms,2S,计时器结束      if self.counter >= 20:            self.timer.stop()            self.text = random.choice(self.data)            self.label.setText(self.text)      # 2S内,每100ms更新一次标签文本      # 先从列表中随机拿出个“奖项”      self.text = random.choice(self.data)      # 把随机拿出的“奖项” 设置给文本      self.label.setText(self.text)
五、运行主函数
if __name__ == "__main__":      import sys      app = QApplication(sys.argv)      win = Window()      win.show()      sys.exit(app.exec())
    本节主要就是了解了:random()随机模块 和 QTimer()定时器的应用;觉得有用的可以留言、关注,大家相互交流。

最新文章

随机文章