当前位置:首页>python>Python零代码批量制作精美奖状

Python零代码批量制作精美奖状

  • 2026-04-21 07:30:51
Python零代码批量制作精美奖状

Python可视化神器|零代码批量制作精美奖状,教师/行政必备效率工具!

在日常工作和学习中,我们总会遇到批量制作奖状的场景:老师要给班级优秀学生、进步之星打印荣誉证书,公司行政要为优秀员工、团队标兵定制表彰奖状,培训机构要为结业学员发放专属结业证书……但传统的奖状制作方式,要么是手动一张张填写,耗时耗力还容易出错;要么是借助复杂的设计软件,需要专业技能,新手根本无从下手;更别提批量生成、自由排版、一键导出打印这些刚需功能,普通工具完全无法满足。

难道就没有一款简单易用、颜值拉满、功能齐全的奖状制作工具吗?今天就给大家带来一款纯Python开发的可视化奖状生成器,无需复杂操作,无需设计基础,打开就能用!这款工具采用PyQt5打造精致不透明的高级界面,支持模板导入、文字自由拖拽、Excel批量导入姓名、单张/批量导出、打印预览+直接打印全功能,界面美观大方、操作逻辑简单清晰,无论是电脑小白还是编程新手,都能轻松上手,几分钟搞定上百张奖状的制作,彻底解放双手,告别繁琐的手动操作!

工具核心亮点拉满:✅精致高级GUI界面,不透明无冗余,视觉超舒适;✅文字自由拖拽定位,字号一键调整,排版随心所欲;✅支持图片模板导入,缩放适配不失真;✅Excel批量导入姓名,一键生成所有奖状;✅单张/批量高清导出,打印预览+直接打印全覆盖;✅纯Python编写,代码可定制,功能可拓展。接下来就带大家深度拆解这款宝藏工具的核心代码,从界面搭建到核心功能,手把手带你掌握开发逻辑!

一、核心基础模块:可拖拽文字标签开发

我们首先要实现奖状的核心交互功能——文字自由拖拽。奖状上的姓名、奖励名称、时间、单位都需要精准定位在模板上,普通标签无法拖拽,因此我们自定义DraggableLabel类,继承自QLabel,实现无背景、无边框、可拖拽、可调整字体的文字标签,这是整个工具排版的核心基础。

完整代码

# 可拖拽文字标签(已去掉边框、背景,完全干净)classDraggableLabel(QLabel):def__init__(self, text, parent=None):        super().__init__(text, parent)# 关键:去掉边框 + 去掉背景,只显示文字        self.setStyleSheet("background:transparent; border:none; padding:2px;")        self.drag_flag = False# 拖拽标记        self.drag_pos = QPoint(0,0)  # 拖拽初始位置        self.font_size = 36# 默认字号        self.font_bold = False# 默认不加粗        self.text_color = QColor(0,0,0)  # 默认黑色# 鼠标按下事件:记录拖拽起始位置defmousePressEvent(self, event):if event.button() == Qt.LeftButton:            self.drag_flag = True            self.drag_pos = event.globalPos() - self.frameGeometry().topLeft()            self.setCursor(Qt.OpenHandCursor)  # 切换抓手图标        super().mousePressEvent(event)# 鼠标移动事件:实现标签跟随移动defmouseMoveEvent(self, event):if self.drag_flag and event.buttons() == Qt.LeftButton:            self.move(event.globalPos() - self.drag_pos)        super().mouseMoveEvent(event)# 鼠标松开事件:结束拖拽defmouseReleaseEvent(self, event):        self.drag_flag = False        self.setCursor(Qt.ArrowCursor)  # 恢复默认光标        super().mouseReleaseEvent(event)# 更新字体样式:字号、颜色、加粗统一设置defupdate_font(self):        font = QFont("宋体", self.font_size)if self.font_bold:            font.setBold(True)        self.setFont(font)        self.setStyleSheet(f"color:{self.text_color.name()};background:transparent;border:none;padding:2px;")

代码详解

  1. 初始化设置:构造函数中设置标签为透明背景+无边框,保证文字完美贴合奖状模板,同时定义拖拽标记、位置、字号等基础属性;
  2. 鼠标事件mousePressEvent记录鼠标按下的初始位置,mouseMoveEvent实时更新标签位置实现拖拽,mouseReleaseEvent结束拖拽状态,三个事件配合完成流畅的拖拽交互;
  3. 字体更新update_font方法统一管理字体样式,支持字号调整、颜色设置、加粗切换,后续可以直接调用修改文字样式。

二、主界面搭建:美观高级的可视化窗口

工具的核心交互都在主窗口完成,我们使用PyQt5的QMainWindow搭建左右分栏布局:左侧为功能控制面板,右侧为奖状预览画布,界面固定宽度、配色柔和、控件间距合理,实现美观大方、不透明的高级视觉效果,同时集成所有核心功能按钮。

完整代码

# 奖状生成器主窗口classCertificateGenerator(QMainWindow):def__init__(self):        super().__init__()        self.setWindowTitle("奖状生成器|批量导入下载版")        self.resize(1200,800)  # 固定窗口大小        self.template_path = None# 模板路径        self.template_pix = None# 模板图片        self.scale_factor = 1.0# 缩放比例        self.name_list = []  # 存储导入的姓名列表        self.init_ui()  # 初始化界面        self.init_drag_labels()  # 初始化拖拽标签# 初始化UI界面:左右分栏布局definit_ui(self):        central = QWidget()        self.setCentralWidget(central)        main_h = QHBoxLayout(central)# 左侧功能面板:固定宽度,浅灰色背景        left_widget = QWidget()        left_widget.setFixedWidth(320)        left_widget.setStyleSheet("background-color:#f8f9fa;border-right:1px solid #ddd;")        left_v = QVBoxLayout(left_widget)        left_v.setAlignment(Qt.AlignTop)        left_v.setSpacing(8)        left_v.setContentsMargins(15,15,15,15)# 模板选择按钮        self.btn_template = QPushButton("📂 选择奖状模板")        self.btn_template.setStyleSheet("height:35px;font-size:14px;")        self.btn_template.clicked.connect(self.select_template)        self.label_template_name = QLabel("未选择模板")        self.label_template_name.setAlignment(Qt.AlignCenter)        left_v.addWidget(self.btn_template)        left_v.addWidget(self.label_template_name)        left_v.addSpacing(10)# Excel批量导入模块        left_v.addWidget(QLabel("=== 批量导入 ==="))        self.btn_import_xls = QPushButton("📄 导入XLS姓名列表")        self.btn_import_xls.setStyleSheet("height:35px;font-size:14px;")        self.btn_import_xls.clicked.connect(self.import_xls_names)        self.label_import_count = QLabel("已导入:0人")        self.label_import_count.setAlignment(Qt.AlignCenter)        left_v.addWidget(self.btn_import_xls)        left_v.addWidget(self.label_import_count)        left_v.addSpacing(10)# 批量下载按钮        self.btn_batch_save = QPushButton("📥 批量下载所有奖状")        self.btn_batch_save.setStyleSheet("height:40px;font-size:14px;background-color:#28a745;color:white;")        self.btn_batch_save.clicked.connect(self.batch_save_certificates)        left_v.addWidget(self.btn_batch_save)        left_v.addSpacing(10)# 画布缩放模块        zoom_h = QHBoxLayout()        self.btn_zoom_in = QPushButton("🔍 放大 +")        self.btn_zoom_out = QPushButton("🔍 缩小 -")        self.btn_reset = QPushButton("重置缩放")        self.btn_zoom_in.clicked.connect(lambda:self.zoom(1.1))        self.btn_zoom_out.clicked.connect(lambda:self.zoom(0.9))        self.btn_reset.clicked.connect(self.zoom_reset)        zoom_h.addWidget(self.btn_zoom_in)        zoom_h.addWidget(self.btn_zoom_out)        zoom_h.addWidget(self.btn_reset)        left_v.addLayout(zoom_h)        left_v.addSpacing(10)# 文字内容输入模块        left_v.addWidget(QLabel("=== 文字内容设置 ==="))        self.edit_name = QLineEdit("张三")        self.edit_reward = QLineEdit("优秀学生标兵")        self.edit_time = QLineEdit("2026年03月31日")        self.edit_school = QLineEdit("青岛市第一实验小学")for edit in [self.edit_name,self.edit_reward,self.edit_time,self.edit_school]:            edit.setStyleSheet("height:30px;font-size:14px;")        left_v.addWidget(QLabel("姓名:"))        left_v.addWidget(self.edit_name)        left_v.addWidget(QLabel("奖励名称:"))        left_v.addWidget(self.edit_reward)        left_v.addWidget(QLabel("时间:"))        left_v.addWidget(self.edit_time)        left_v.addWidget(QLabel("单位:"))        left_v.addWidget(self.edit_school)        left_v.addSpacing(10)# 字号调整模块        left_v.addWidget(QLabel("=== 全局字号 ==="))        self.spin_font = QSpinBox()        self.spin_font.setRange(12,120)        self.spin_font.setValue(36)        self.spin_font.setStyleSheet("height:30px;font-size:14px;")        self.spin_font.valueChanged.connect(self.set_all_font_size)        left_v.addWidget(self.spin_font)        left_v.addSpacing(20)# 操作按钮:刷新、保存、打印        self.btn_refresh = QPushButton("🔄 刷新文字")        self.btn_save = QPushButton("💾 单张下载成品")        self.btn_preview = QPushButton("🖨️ 打印预览")        self.btn_print = QPushButton("直接打印")for btn in [self.btn_refresh,self.btn_save,self.btn_preview,self.btn_print]:            btn.setStyleSheet("height:38px;font-size:14px;")        self.btn_refresh.clicked.connect(self.refresh_text)        self.btn_save.clicked.connect(self.save_visible_canvas)        self.btn_preview.clicked.connect(self.print_preview_canvas)        self.btn_print.clicked.connect(self.print_canvas)        left_v.addWidget(self.btn_refresh)        left_v.addWidget(self.btn_save)        left_v.addWidget(self.btn_preview)        left_v.addWidget(self.btn_print)# 右侧画布:滚动区域+奖状预览        right_widget = QWidget()        right_v = QVBoxLayout(right_widget)        self.scroll_area = QScrollArea()        self.scroll_area.setWidgetResizable(True)        self.canvas_container = QWidget()        self.canvas_layout = QStackedLayout(self.canvas_container)        self.bg_label = QLabel()        self.bg_label.setAlignment(Qt.AlignCenter)        self.bg_label.setStyleSheet("background:#eee; border:none;")        self.canvas_layout.addWidget(self.bg_label)        self.scroll_area.setWidget(self.canvas_container)        right_v.addWidget(self.scroll_area)        main_h.addWidget(left_widget)        main_h.addWidget(right_widget)# 初始化拖拽标签:创建4个核心文字标签并预设位置definit_drag_labels(self):        self.drag_name = DraggableLabel("张三")        self.drag_reward = DraggableLabel("优秀学生标兵")        self.drag_time = DraggableLabel("2026年03月31日")        self.drag_school = DraggableLabel("青岛市第一实验小学")for lab in [self.drag_name,self.drag_reward,self.drag_time,self.drag_school]:            lab.font_size = 36            lab.update_font()# 将标签绑定到画布上        self.drag_name.setParent(self.bg_label)        self.drag_reward.setParent(self.bg_label)        self.drag_time.setParent(self.bg_label)        self.drag_school.setParent(self.bg_label)# 预设初始位置        self.drag_name.move(200,180)        self.drag_reward.move(200,320)        self.drag_time.move(400,550)        self.drag_school.move(200,620)

代码详解

  1. 布局设计:采用左右水平布局,左侧固定320px宽度作为控制面板,浅灰色配色高级不刺眼,右侧为滚动画布,适配不同尺寸的奖状模板;
  2. 功能集成:左侧集成模板选择、Excel导入、批量下载、画布缩放、文字编辑、字号调整、打印导出所有功能,按钮样式统一,操作逻辑清晰;
  3. 标签初始化init_drag_labels创建姓名、奖励、时间、单位四个拖拽标签,绑定到画布上并预设位置,用户可直接拖拽调整。

三、核心功能实现:批量生成+导出打印全流程

这是工具的灵魂模块,实现Excel姓名批量导入、奖状模板缩放、单张/批量高清导出、打印预览+直接打印功能,解决传统奖状制作的所有痛点,代码逻辑严谨,支持异常处理,运行稳定无卡顿。

完整代码

# ========== 导入Excel姓名列表 ==========defimport_xls_names(self):        path, _ = QFileDialog.getOpenFileName(self, "选择Excel文件""""Excel文件(*.xls)")ifnot path:returntry:            workbook = xlrd.open_workbook(path)            sheet = workbook.sheet_by_index(0)            self.name_list = []# 读取第一列所有非空姓名for row in range(sheet.nrows):                name = str(sheet.cell_value(row, 0)).strip()if name:                    self.name_list.append(name)            self.label_import_count.setText(f"已导入:{len(self.name_list)}人")            QMessageBox.information(self, "导入成功"f"成功导入 {len(self.name_list)} 个姓名!")except Exception as e:            QMessageBox.critical(self, "导入失败"f"请使用.xls格式文件\n错误信息:{str(e)}")# 生成唯一文件名:姓名+时间+随机数defgenerate_filename(self, name):        time_str = datetime.now().strftime("%Y%m%d%H%M%S")        rand_str = str(random.randint(1000099999))returnf"{name}_{time_str}_{rand_str}.png"# ========== 批量下载所有奖状 ==========defbatch_save_certificates(self):ifnot self.template_pix:            QMessageBox.warning(self, "警告""请先选择奖状模板!")return# 选择保存目录        save_dir = QFileDialog.getExistingDirectory(self, "选择保存文件夹")ifnot save_dir:return# 获取待生成姓名列表        target_names = self.name_list if self.name_list else [self.edit_name.text()]        success_count = 0        total = len(target_names)# 循环生成奖状for name in target_names:try:                self.drag_name.setText(name)                QApplication.processEvents()  # 刷新界面                pix = self.get_canvas_pixmap()# 保存图片                filename = self.generate_filename(name)                save_path = os.path.join(save_dir, filename)                pix.save(save_path, "PNG"100)                success_count += 1except Exception as e:                print(f"生成失败 {name}{e}")        QMessageBox.information(self, "批量完成"f"共处理:{total} 张\n成功生成:{success_count} 张")# 选择奖状模板并缩放defselect_template(self):        path,_ = QFileDialog.getOpenFileName(self,"选择奖状模板","","图片(*.jpg *.png *.jpeg *.bmp)")ifnot path: return        self.template_path = path        self.label_template_name.setText(os.path.basename(path))        self.template_pix = QPixmap(path)        self.apply_zoom()# 画布缩放功能defzoom(self, rate):        self.scale_factor *= rate        self.scale_factor = max(0.3, min(3.0, self.scale_factor))        self.apply_zoom()defzoom_reset(self):        self.scale_factor = 1.0        self.apply_zoom()defapply_zoom(self):ifnot self.template_pix: return        w = int(self.template_pix.width() * self.scale_factor)        h = int(self.template_pix.height() * self.scale_factor)        scaled_pix = self.template_pix.scaled(w,h,Qt.KeepAspectRatio,Qt.SmoothTransformation)        self.bg_label.setPixmap(scaled_pix)        self.bg_label.resize(scaled_pix.size())# 刷新文字内容defrefresh_text(self):        self.drag_name.setText(self.edit_name.text())        self.drag_reward.setText(self.edit_reward.text())        self.drag_time.setText(self.edit_time.text())        self.drag_school.setText(self.edit_school.text())# 统一调整字号defset_all_font_size(self, size):for lab in [self.drag_name,self.drag_reward,self.drag_time,self.drag_school]:            lab.font_size = size            lab.update_font()# 核心:截取画布高清图片defget_canvas_pixmap(self):ifnot self.bg_label.pixmap() or self.bg_label.pixmap().isNull():returnNone        pix = QPixmap(self.bg_label.size())        self.bg_label.render(pix)return pix# 单张导出奖状defsave_visible_canvas(self):        pix = self.get_canvas_pixmap()ifnot pix:            QMessageBox.warning(self,"警告","请先选择模板!")return        path, _ = QFileDialog.getSaveFileName(self,"保存成品",self.generate_filename(self.edit_name.text()),"PNG图片(*.png)")if path:            pix.save(path, "PNG"100)            QMessageBox.information(self,"成功","已保存无框干净成品!")# 打印预览defprint_preview_canvas(self):        pix = self.get_canvas_pixmap()ifnot pix:            QMessageBox.warning(self,"警告","请先选择模板!")return        p = QPrinter(QPrinter.HighResolution)        dlg = QPrintPreviewDialog(p)        dlg.paintRequested.connect(lambda pr: self.draw_pix(pr, pix))        dlg.exec()# 直接打印defprint_canvas(self):        pix = self.get_canvas_pixmap()ifnot pix:            QMessageBox.warning(self,"警告","请先选择模板!")return        p = QPrinter(QPrinter.HighResolution)        dlg = QPrintDialog(p)if dlg.exec_():            self.draw_pix(p, pix)# 打印绘制图片defdraw_pix(self, printer, pix):        pt = QPainter(printer)        rect = pt.viewport()        size = pix.size()        size.scale(rect.size(), Qt.KeepAspectRatio)        pt.setViewport(rect.x(), rect.y(), size.width(), size.height())        pt.setWindow(pix.rect())        pt.drawPixmap(00, pix)# 主程序运行if __name__ == "__main__":    app = QApplication(sys.argv)    app.setStyle(QStyleFactory.create("Fusion"))    win = CertificateGenerator()    win.show()    sys.exit(app.exec_())

代码详解

  1. Excel导入:使用xlrd库读取.xls格式文件,提取第一列姓名,支持空值过滤,异常处理提示格式错误;
  2. 批量生成:循环遍历姓名列表,实时更新画布文字,截取高清图片并保存,文件名唯一不重复;
  3. 模板缩放:限制缩放比例在0.3-3.0之间,保持图片比例不变,适配不同尺寸的奖状模板;
  4. 导出打印get_canvas_pixmap实现画布无框高清截图,支持单张导出、批量导出、打印预览、直接打印,满足所有使用场景。

四、知识点总结

  1. PyQt5界面开发:掌握QMainWindow主窗口、QHBoxLayout/QVBoxLayout布局、QPushButton/QLabel/QLineEdit基础控件的使用,实现自定义美观界面;
  2. 自定义控件开发:继承PyQt5原生控件,重写鼠标事件,实现可拖拽、无背景的自定义标签;
  3. 图片处理:使用QPixmap加载、缩放、渲染图片,实现画布截图与高清导出;
  4. Excel数据读取:通过xlrd库读取表格数据,实现批量数据导入与处理;
  5. 交互逻辑开发:文件选择、目录选择、消息提示、打印功能的集成,完善工具的实用性;
  6. 异常处理:对文件读取、图片生成、打印操作做异常捕获,保证工具运行稳定。

五、拓展场景与测试步骤

拓展场景

  1. 教育场景:幼儿园/小学/中学批量制作学生奖状、荣誉证书、结业证书;
  2. 企业场景:公司制作优秀员工奖状、团队表彰证书、入职纪念证书;
  3. 机构场景:培训机构、兴趣班制作学员结业证书、比赛荣誉证书;
  4. 功能拓展:新增文字颜色选择、加粗/斜体切换、多模板切换、PDF导出、水印添加等功能;
  5. 封装分发:使用PyInstaller将代码打包为exe文件,无需Python环境,Windows电脑直接运行。

测试步骤

  1. 环境准备:安装依赖库pip install PyQt5 xlrd==1.2.0
  2. 基础测试:运行代码,打开工具,选择奖状模板,拖拽文字调整位置,修改内容后点击「单张下载」,验证导出图片是否正常;
  3. 批量测试:准备.xls格式姓名表格,点击「导入XLS姓名列表」,选择文件夹后点击「批量下载」,验证批量生成是否成功;
  4. 打印测试:选择模板后,点击「打印预览」查看效果,再点击「直接打印」,验证打印功能;
  5. 缩放测试:使用放大/缩小/重置按钮,验证画布缩放是否流畅,图片是否失真。

这款Python奖状生成器,用极简的代码实现了超全的功能,界面精致高级、操作简单易用,完美解决了批量制作奖状的痛点。无论是日常使用还是学习PyQt5开发,都是不可多得的优质案例,赶紧收藏试用,让效率直接拉满!

总结

  1. 工具基于PyQt5+xlrd开发,实现可视化奖状制作,零代码操作门槛;
  2. 核心功能覆盖拖拽排版、批量导入、高清导出、一键打印,满足全场景需求;
  3. 代码结构清晰,分为自定义标签、界面搭建、核心功能三大模块,易学习易拓展;
  4. 适配教育、企业、机构等多场景,可打包为exe文件,通用型极强。

通过网盘分享的文件:奖状批量生成器.exe

链接: https://pan.baidu.com/s/1-1RraGHWUwCYVZKKhVu-uw?pwd=4444 提取码: 4444

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-21 10:16:32 HTTP/2.0 GET : https://f.mffb.com.cn/a/484411.html
  2. 运行时间 : 0.089574s [ 吞吐率:11.16req/s ] 内存消耗:4,856.04kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=fbb475a746798afa6d510a629c8c8374
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000525s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000793s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000335s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000272s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000505s ]
  6. SELECT * FROM `set` [ RunTime:0.000212s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000587s ]
  8. SELECT * FROM `article` WHERE `id` = 484411 LIMIT 1 [ RunTime:0.001780s ]
  9. UPDATE `article` SET `lasttime` = 1776737792 WHERE `id` = 484411 [ RunTime:0.007557s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000255s ]
  11. SELECT * FROM `article` WHERE `id` < 484411 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000499s ]
  12. SELECT * FROM `article` WHERE `id` > 484411 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000631s ]
  13. SELECT * FROM `article` WHERE `id` < 484411 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.004396s ]
  14. SELECT * FROM `article` WHERE `id` < 484411 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004995s ]
  15. SELECT * FROM `article` WHERE `id` < 484411 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000941s ]
0.091249s