wrx231824 发表于 2022-5-30 10:38

Python 业余人员自制点名程序


语文老师一名,放假时间自学python,尝试做了一个点名程序,用pyside2加了一个UI,功能单一。供大家娱乐一下。
界面在左下角,
目前出现的问题,精力有限没时间解决。

1、用Pyinstallers打包后,在学校教室电脑上出现缺少dll文件,电脑是学校的,没法装c++2015,
2、在新电脑上会提示找不到库文件。

文件比较小,就放到度盘
链接: https://pan.baidu.com/s/1s9erPtImF576kqZLF9UIeQ?pwd=5qqu 提取码: 5qqu 复制这段内容后打开百度网盘手机App,操作更方便哦


# coding:utf-8



import sys
from random import choice

from PySide2.QtCore import Slot, Qt
from PySide2.QtGui import QFont, QGuiApplication
from PySide2.QtWidgets import QApplication, QWidget, QMessageBox

from ui_namechose import Ui_Form



import openpyxl
from playsound import playsound
from threading import Thread

"""
读取excel文件的学生名字

"""
name = []   #用来装学生信息
#读取文件
wb = openpyxl.load_workbook("名单.xlsx", data_only=True)

#读取sheet信息
sheet = wb.sheetnames

#选择需要的sheet表格
mysheet = wb['name']



#读取A列信息
ndata = mysheet['A']

#信息加入到列表name[]
for cell_columns in ndata:

    name.append(cell_columns.value)


#播放提示音
def play_sound(file):# 播放声音
    playsound(file)

#设置UI
class loadui(QWidget):
    def __init__(self):
      super(loadui, self).__init__()
      self.ui = Ui_Form()
      self.ui.setupUi(self)
      self.name = name.copy()
      #设置label显示格式,边框,大小
      self.ui.showlabel.setStyleSheet('border-radius:30px;border:5px groove')
      #设置UI位置和大小
      self.window().setGeometry(0, QGuiApplication.primaryScreen().geometry().height() - 150, 200, 100)
      self.window().setFixedSize(200, 100)
      #不许自己调整大小,禁用最大化按钮,窗口置顶
      self.window().setWindowFlags(Qt.WindowMinimizeButtonHint |
                                     Qt.WindowCloseButtonHint |
                                     Qt.WindowStaysOnTopHint)
      
      
    #抽取
    def chouse(self):
      if len(self.name) > 0:#看看列表里面还有没有名字

            codename = choice(self.name)#随机选择

            self.name.remove(codename)   #删掉选出的名字
            self.ui.showlabel.setText(codename)#显示选出的名字

            self.ui.showlabel.setFont(QFont("楷体", 40, QFont.Black))#设置显示字体,颜色,大小
         
      else:
            self.openMessageBox()#没有名字弹出提示框

            # TODO: '弹出弹窗,重新开始!'

    def openMessageBox(self):
      QMessageBox.information(self, '提示:', '名字全部点完,是否重新开始?')
      self.name = name.copy()   #名字列表重新装载名字

      self.ui.showlabel.clear()   #显示界面清空


    #点击抽取按钮时触发
    @Slot()
    def on_okButton_clicked(self):
      Thread(target=play_sound, args=('ding.mp3',), daemon=True).start()#设置临时线程,播放声音
      self.chouse()


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

skyadmin 发表于 2022-5-30 19:30

ui好看点就好了

yzxqhdx 发表于 2022-5-30 20:14

挺好,改改还能干别的{:1_918:}

normandie2008 发表于 2022-5-30 21:03

本帖最后由 normandie2008 于 2022-5-30 21:14 编辑

你这样读取excel数据太麻烦了。用pandas库代码可以简洁很多。而且你excel工作簿的表名必须时name才行的。

wrx231824 发表于 2022-6-1 07:30

skyadmin 发表于 2022-5-30 19:30
ui好看点就好了

代码全是在网上copy改的,对我来说能用就行

wrx231824 发表于 2022-6-1 07:32

normandie2008 发表于 2022-5-30 21:03
你这样读取excel数据太麻烦了。用pandas库代码可以简洁很多。而且你excel工作簿的表名必须时name才行的。

面向CSDN编程:Dweeqw,直接找到的是openpyxl的教程,有时间研究研究,

吾爱啦啦 发表于 2022-6-1 14:57

++

语文老师也要懂代码么

wrx231824 发表于 2022-6-1 19:19

吾爱啦啦 发表于 2022-6-1 14:57
语文老师也要懂代码么

爱好,纯属爱好·~
页: [1]
查看完整版本: Python 业余人员自制点名程序