python实战-抽答小软件(老师专属版)

好久没更新了,有段时间没事帮同学做了几个小软件,很简单的所以分享给大家,代码相对比较简单但是并不一定是最优解,可以给大家提供一下思路哈哈,图侵删。

工程及软件下载链接:

代码+可执行文件:https://download.csdn.net/download/VCA821/13204417

仅可执行文件(软件):https://download.csdn.net/download/VCA821/13204425

首先上效果图吧!软件名称:Lucky_Dog

 

实现功能:

功能十分简单,在一个EXCEL的A列里写下名单(人数不作限制),然后保存后,在软件界面按绿色开始按键后开始抽人,采用的是随机显示和抽取,然后名字会显示到“那个谁”的位置处,功能结束

使用软件和库版本:

pycharm2019.3+eric6+Qt designer  (并不是全部要装的,因为做了其他软件,大家可以参考版本)

代码实现:

from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QMainWindow,QApplication
import openpyxl
from Ui_Lucky_Draw import Ui_Luckydog
from  random import choice

wb = openpyxl.load_workbook(r'..\Lucky_Draw\namelist.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
namelist = []
for i in range(1,int(sheet.max_row)+1):
    if sheet.cell(row = i,column = 1).value == '':
        pass
    else:
        namelist.append(str(sheet.cell(row = i,column = 1).value))
print(namelist)

class Luckydog(QMainWindow, Ui_Luckydog):
    """
    Class documentation goes here.
    """
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget
        @type QWidget
        """
        super(Luckydog, self).__init__(parent)
        self.setupUi(self)
        self.stopflag = 0

    @pyqtSlot()
    def on_pushButton_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        try:
            self.stopflag = 0
            while True:
                if self.stopflag == 0:
                    for name in namelist:
                        if self.stopflag == 1:
                            break
                        else:
                            for i in range(0,30000):
                                self.label.setText(choice(namelist))
                            QApplication.processEvents()
                else:
                    choicename = choice(namelist)
                    self.label.setText(choicename)
                    QApplication.processEvents()
                    break
        except:
            pass

    @pyqtSlot()
    def on_pushButton_2_clicked(self):
        """
        Slot documentation goes here.
        """
        # TODO: not implemented yet
        self.stopflag = 1

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    ui = Luckydog()
    ui.show()
    sys.exit(app.exec_())

代码详解:

上面就是所有代码了,是不是十分的简单,在最一开始,我们先将预置EXCEL文件中的A列所有值都读出来生成一个list,有个比较重要的信号就是stop_flag,当stop_flag==0的时候,我们的软件显示上会一直刷新名字,当stop_flag==1的时候就会停止在一个名字上,我们先抛开pushButton2(停止按键)不说,程序开始到while函数里,name是一直轮询list里的名单(感觉多此一举,主要是如果大家想顺序显示的话方便改动),如果没有按停止按键,我我们将 self.label.setText(choice(namelist))这句话执行30000次,这里其实就是重复抽取了30000次,而QApplication.processEvents()同样重要,这个函数会在每次执行到的时候跳出pushButton事件检查是否有其他事件,如果没有这行代码,函数在while里无线循环是无法响应pushButton2的事件的,同时显示上也无法更新,这也就是为什么30000次我都在刷名单但是显示上是把一个名字显示了30000个时钟(这里不好想明白,就是只有执行这句话,我们的显示才会刷新一次,所以每次刷新的名字是地第30000次随机出来的名字,然后等到下一次第30000次的名字再刷新,如此反复),当我们按到停止按键,stopflag置1后回到while函数里,我们进入else显示一个随机名字后跳出循环。

优点:

代码简单,相对好理解,没有过多的参数

缺点:

当把刷新时间设置过长时,如10S,20S,那名单可能就无法实时停下来了,从上面实现角度分析也很好理解,因为我必须执行到30000次,才会出来检测一下事件同时刷新参数,如果你是100000次,你按了后要等100000次执行完才会变化,有很大的延迟,不过对我们这次设计的软件不用太担心这个问题,10S那不成作弊了哈哈

 

以上就是本代码的详细解析,工程我会整体上传,同时会有可用的已经编辑好的exe,老师们可以直接取用,正在学习的开发同学们也可以看到代码工程,一举两得,我也是刚刚开始学习,大家一起共同学习,大家有问题也欢迎私信,我看到都会答复。希望各位老师和同学喜欢

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要成为一个Python的大牛,需要通过一系列实战经验来不断进阶。 首先,我们需要从菜鸟开始,学习基本的语法和常用库。掌握Python的基本语法、变量、数据类型、条件语句和循环语句等是必不可少的。此外,还要熟悉常用的Python库,如NumPy、Pandas和Matplotlib等,这些库在数据处理和可视化方面都非常常用。 接下来,我们需要通过实战来巩固所学的知识。可以选择一些小项目来实践,比如编写一个简单的Web应用、爬取网页数据或者创建一个简单的机器学习模型。通过实际应用,可以提升对Python的实际运用能力。 在实战过程中,我们需要积累并解决一些常见的问题。这些问题可能涉及到代码的优化、调试、性能优化等方面。通过解决这些问题,我们可以提升自己的编程能力,并且学会更高效地利用Python来解决实际问题。 另外,为了进一步提升自己的水平,可以参与开源项目或者自己创建项目。通过参与开源项目,可以学习到更多高级的编程技术和实践经验。同时,创建自己的项目有助于锻炼独立思考和解决问题的能力。 除了对Python语言的掌握外,我们还需要了解相关的领域知识。比如,在数据科学领域,需要学习统计学、机器学习和数据挖掘等知识。通过将Python与领域知识相结合,可以在相关领域中发挥更大的作用。 总而言之,成为一个Python的大牛需要不断地实践和学习。通过不断地积累实战经验,掌握并解决常见问题,参与开源项目或者自己创建项目,同时结合相关领域的知识,多角度地深入学习Python。这样的进阶之路需要耐心和毅力,但最终将能够取得令人骄傲的成果。 ### 回答2: Python是一门广泛应用于软件开发和数据分析的编程语言,具有简洁易学、功能强大的特点,因此非常适合初学者入门。然而,要想从菜鸟到大牛,需要不断拓展知识,提升技能。 首先,要全面掌握Python的基础知识,包括语法、数据类型、条件语句、循环语句等。可以通过阅读相关书籍、教程、参加培训班等方式进行学习。 其次,理解面向对象编程(OOP)是进阶的关键。Python是一门支持OOP的语言,掌握面向对象的概念和用法可以使代码更加模块化和可重用。可以通过练习编写类和对象,深入理解继承、封装和多态等概念。 另外,掌握Python标准库和第三方库也是提升的必要条件。标准库包含了许多常用的模块和函数,如操作文件、网络编程、并发等。同时,第三方库可以满足更具体的需求,如数据分析(NumPy、Pandas)、机器学习(Scikit-learn、TensorFlow)等。可以通过实践项目和参与开源社区来积累经验和熟悉常用的库。 此外,代码优化和性能调优也是进阶的一环。良好的代码结构、规范的命名和注释可以提高代码的可读性和可维护性。同时,了解性能优化的技巧和工具可以提高程序的执行效率。 最后,实际项目经验是从菜鸟到大牛的关键。通过实践解决真实的问题,遇到的挑战和解决方案都可以让你不断成长。可以自己找项目实践,也可以参与开源项目、参加比赛等方式来积攒经验。 总的来说,进阶的过程需要坚持不懈的学习和实践,并且保持持续学习的动力。不断总结和思考,参与开源社区和技术讨论也可以获得更多的启发和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值