功能添加:可选文件类型 PDF 或 Word

This commit is contained in:
2025-06-03 23:49:17 +08:00
parent 92f32202f1
commit 5e73571705
2 changed files with 51 additions and 32 deletions

View File

@@ -2,9 +2,9 @@ from functools import wraps
from typing import Literal, Callable
from PySide6.QtCore import Qt, Signal, QThread
from PySide6.QtWidgets import QHBoxLayout, QVBoxLayout, QFileDialog
from PySide6.QtWidgets import QHBoxLayout, QVBoxLayout, QFileDialog, QButtonGroup, QWidget
from qfluentwidgets import GroupHeaderCardWidget, PushButton, IconWidget, BodyLabel, PrimaryPushButton, FluentIcon, \
LineEdit
LineEdit, RadioButton
from module.worker import DTGWorker
from ui.components.infobar import ProgressInfoBar
@@ -61,7 +61,17 @@ class ExportSettingsCard(GroupHeaderCardWidget):
self.chooseExportDirectoryButton = PushButton("选择")
self.exportFileNameLineEdit = LineEdit()
self.startButton = PrimaryPushButton(FluentIcon.PLAY_SOLID, "开始")
self.pdfRadio = RadioButton("PDF")
self.wordRadio = RadioButton("Word")
self.radioWidget = QWidget(self)
self.radioHbox = QHBoxLayout(self.radioWidget)
self.radioGroup = QButtonGroup(self.radioWidget)
self.radioGroup.addButton(self.pdfRadio)
self.radioGroup.addButton(self.wordRadio)
self.radioHbox.addWidget(self.pdfRadio)
self.radioHbox.addWidget(self.wordRadio)
self.pdfRadio.setChecked(True)
self.hintIcon = IconWidget(FluentIcon.INFO.icon(color=MAIN_THEME_COLOR))
self.hintLabel = BodyLabel("点击开始按钮以开始生成 👉")
self.chooseExportDirectoryButton.setFixedWidth(120)
@@ -85,7 +95,8 @@ class ExportSettingsCard(GroupHeaderCardWidget):
self.chooseExportDirectoryButton)
self.fnGroup = self.addGroup(FluentIcon.DOCUMENT, "导出文件名", "输入导出文件的名称",
self.exportFileNameLineEdit)
self.fnGroup.setSeparatorVisible(True)
self.exportFormatGroup = self.addGroup(FluentIcon.DOCUMENT, "导出文件格式", "选择导出文件的格式", self.radioWidget)
self.exportFormatGroup.setSeparatorVisible(True)
self.vBoxLayout.addLayout(self.bottomLayout)
@@ -148,12 +159,12 @@ class DefenseWidget(Widget):
self.pib.set_title('请稍后')
def set_pb_value(self, value: int) -> None:
self.pib.set_progress(value)
if value == 100:
self.pib.set_progress(101)
self.pib.set_title('正在转换文件')
elif value == -1:
if value == -1:
self.successFlag = False
self.pib.set_progress(value)
def set_pb_msg(self, value: str) -> None:
self.pib.set_title(value)
def enable_start_check(func: Callable):
@wraps(func)
@@ -204,7 +215,8 @@ class DefenseWidget(Widget):
self.input_student_filepath,
self.input_question_filepath,
self.output_filepath,
self.output_filename
self.output_filename,
self.exportCard.radioGroup.checkedButton().text().lower()
)
self.worker.moveToThread(self.thread)
@@ -214,7 +226,8 @@ class DefenseWidget(Widget):
# 线程启动与信号连接
self.thread.started.connect(self.worker.run)
self.worker.progress.connect(self.set_pb_value)
self.worker.progress[int].connect(self.set_pb_value)
self.worker.progress[str].connect(self.set_pb_msg)
self.worker.error.connect(self.show_error)
self.worker.finished.connect(self.thread.quit)