吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1926|回复: 9
收起左侧

[学习记录] 萌新第一帖!python写的抽奖小软件,附源码

[复制链接]
KyleKing 发表于 2023-3-23 15:30
本帖最后由 KyleKing 于 2023-3-23 15:34 编辑

最近在学习pyqt5,想起了高中老师随机抽取学生回答问题的抽奖小程序,自己也试着做了一个,用法很简单,输入总数比如100,那么点击开始抽奖,就开始滚动大屏幕,点击停止,抽出中奖数字,大家可以根据自己的实际情况来进行进一步优化和改进,有想法也可以留言给我。
bb22a097dc922473dd3c5af395e5b4d.png
附上源码
[Python] 纯文本查看 复制代码
import sys
import random
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QLineEdit
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt, QThread, pyqtSignal

class LotteryThread(QThread):
    signal = pyqtSignal(int)

    def __init__(self, max_num):
        super().__init__()
        self.max_num = max_num

    def run(self):
        while True:
            num = random.randint(1, self.max_num)
            self.signal.emit(num)
            self.msleep(50)

class Lottery(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('抽奖程序')
        self.setGeometry(300, 300, 500, 400)

        self.title_label = QLabel(self)
        self.title_label.setText('XXX抽奖活动')      #这里修改抽奖活动的标题
        self.title_label.setFont(QFont('Arial', 20))
        self.title_label.setAlignment(Qt.AlignCenter)
        self.title_label.setGeometry(0, 50, 500, 50)

        self.num_label = QLabel(self)
        self.num_label.setText('0')
        self.num_label.setFont(QFont('Arial', 100))
        self.num_label.setAlignment(Qt.AlignCenter)
        self.num_label.setGeometry(0, 150, 500, 100)

        self.input_edit = QLineEdit(self)
        self.input_edit.setGeometry(210, 300, 80, 30)
        self.input_edit.setPlaceholderText("请输入总数")

        self.start_button = QPushButton('开始抽奖', self)
        self.start_button.setGeometry(50, 350, 100, 30)
        self.start_button.clicked.connect(self.start_lottery)

        self.stop_button = QPushButton('停止抽奖', self)
        self.stop_button.setGeometry(350, 350, 100, 30)
        self.stop_button.clicked.connect(self.stop_lottery)

        self.lottery_thread = LotteryThread(1)
        self.lottery_thread.signal.connect(self.update_num)

    def start_lottery(self):
        max_num = int(self.input_edit.text())
        self.lottery_thread.max_num = max_num
        self.lottery_thread.start()

    def stop_lottery(self):
        self.lottery_thread.terminate()

    def update_num(self, num):
        self.num_label.setText(str(num))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    lottery = Lottery()
    lottery.show()
    sys.exit(app.exec_())

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
luliucheng + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

qq824356421 发表于 2023-3-23 19:56
可以用于超市那种抽奖么?
deqian0313 发表于 2023-3-23 21:14
我想设定后门  怎么搞的  比如抽到第五个,第五个必中指定的奖品
 楼主| KyleKing 发表于 2023-3-24 10:09
deqian0313 发表于 2023-3-23 21:14
我想设定后门  怎么搞的  比如抽到第五个,第五个必中指定的奖品

我写这个这个是纯随机抽,想要加后门的话,可以设定一个循环次数变量,加个判断函数,当循环到第几次的时候,点击暂停按钮直接显示就行
 楼主| KyleKing 发表于 2023-3-24 10:11
qq824356421 发表于 2023-3-23 19:56
可以用于超市那种抽奖么?

只要给每个人编一个号,都可以直接用这个来抽
18136627521 发表于 2023-3-25 18:19
我想知道怎么安装python实现可以生成小的EXE,因为我朋友会代码,给我的代码我想变成程序供自己使用
deqian0313 发表于 2023-3-25 21:47
KyleKing 发表于 2023-3-24 10:09
我写这个这个是纯随机抽,想要加后门的话,可以设定一个循环次数变量,加个判断函数,当循环到第几次的时 ...

这种抽奖在我们公司  不可能放出去的  只能是领导拿的~~~
 楼主| KyleKing 发表于 2023-3-27 11:27
18136627521 发表于 2023-3-25 18:19
我想知道怎么安装python实现可以生成小的EXE,因为我朋友会代码,给我的代码我想变成程序供自己使用

用python打包工具PyInstaller,给你个链接:https://blog.csdn.net/weixin_56659172/article/details/128048924
18136627521 发表于 2023-3-29 22:28
这玩意如果只想学个办公自动化的编程不知道难不难
RichardWei 发表于 2023-3-31 10:31
楼主加油,学到了感谢!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 23:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表