我想说的话
本想写一个随机点名软件,写了这么多,窗口基本已成型,有能力者可以继续二开
想了想,放在电脑里吃灰,倒不如分享出来,谁要参考就拿去参考
一,引用的库
# 引入QT库 from PyQt5 import QtCore from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import QWidget # Qt样式表的库 from qdarkstyle import load_stylesheet_pyqt5 from openpyxl import load_workbook # 系统库 import os import sys import time import random
二,界面截图
三,运行原理
通过excel文档来读取点名列表,从而进行随机点名
四,完整代码
# 引入QT库 import typing from PyQt5 import QtCore from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import QWidget # Qt样式表的库 from qdarkstyle import load_stylesheet_pyqt5 from openpyxl import load_workbook # 一下是系统库 import os import sys import time import random # 创建页面 class MyMainWindow(QWidget): def __init__(self): super().__init__() self.intiUI() def intiUI(self): # 设置窗口标题 self.setWindowTitle("课堂随机点名系统") # 窗口大小 self.setFixedSize(1199, 1000) # 创建滚动区域 scroll_area = QScrollArea(self) scroll_area.setWidgetResizable(True) # 显示名字的布局器vbox_name vbox_name = QVBoxLayout() self.point_name = QLabel() self.point_name.setText("开始点名咯!") self.point_name.setStyleSheet( 'font-size:75px;text-align:center;font-weight:bold;font-family:"Microsoft JhengHei";' ) # 把文本加到布局器里面去 vbox_name.addWidget(self.point_name) # 居中 vbox_name.setAlignment(Qt.AlignCenter) # vbox_name.addSpacing(80) # 添加开始点名按钮,其布局器为vbox_start vbox_start = QVBoxLayout() self.start_button = QPushButton() self.start_button.setText("开始点名") self.start_button.clicked.connect(self.random_call) self.start_button.setFixedSize(250, 75) self.start_button.setStyleSheet( 'font-size:50px;font-weight:bold;text-align:center;font-family:"Microsoft JhengHei";' ) # 点击事件 # 加到布局器中去 # vbox_start.addStretch() vbox_start.addWidget(self.start_button) vbox_start.setAlignment(Qt.AlignCenter) # 提示信息的布局器hbox_data hbox_data = QHBoxLayout() self.message = QLabel() self.message.setText("提示信息---By Tndroid") self.message.setStyleSheet('font-size: 30px;') # 添加到布局器 hbox_data.addWidget(self.message) hbox_data.setAlignment(Qt.AlignBottom) # 已点列表 # 布局器vbox_lists bobby_box = QGroupBox("点名列表") # bobby_box.setStyleSheet( # # 'font-size:35px;font-weight:bold;text-align:center;font-family:"Microsoft JhengHei";' # ) content = QWidget() content.setWindowIconText("liebiio") vbox_lists = QVBoxLayout(content) for i in range(1, 49): btn = QPushButton("学生%s"%i) btn.setFixedSize(550, 90) btn.setStyleSheet( 'font-size:26px;font-weight:bold;text-align:center;font-family:"Microsoft JhengHei";' ) vbox_lists.addWidget(btn) # 将内容添加到滚动区域 scroll_area.setWidget(content) # vbox_lists.setAlignment(Qt.AlignTop) # vbox_lists.setLayout(scroll_area) v_box1 = QVBoxLayout() v_box1.addLayout(vbox_name) v_box1.addLayout(vbox_start) v_box1.addLayout(hbox_data) # v_box1.setAlignment(Qt.Align) v_box2 = QVBoxLayout() v_box2.addWidget(scroll_area) h_box = QHBoxLayout() h_box.addLayout(v_box1) # h_box.addStretch() h_box.addStretch() h_box.addLayout(v_box2) self.setLayout(h_box) self.file_path = None self.students = [] self.call_names = [] file_name = "D:\XiangMu\dianming\学生名单.xlsx" self.file_path = file_name def load_file(self): if not self.file_path: self.point_name.setText('目录不存在') return self.point_name.setText('.......') wb = load_workbook(self.file_path) ws = wb.active for row in ws.iter_rows(min_row=2, values_only=True): self.students.append(row[1]) def random_call(self): self.load_file() if not self.students: self.point_name.setText('请先选择一个有效的Excel文件') return time.sleep(1) student = random.choice(self.students) random_student = random.choice(self.students) self.call_names.append(random_student) self.point_name.setText('随机点到的学生是\n{}'.format(student)) print(self.call_names) if __name__ == '__main__': app = QApplication(sys.argv) fime_name = "D:\XiangMu\dianming\学生名单.xlsx" app.setStyleSheet(load_stylesheet_pyqt5()) main = MyMainWindow() main.show() sys.exit(app.exec_())
这就是全部内容了,如果想要下载完整源码,请到我的gitee仓库 naming: Python + PyQt5 + openpyxl 随机点名软件