diff --git a/module/defense/doc.py b/module/defense/doc.py index f75c67c..3824b10 100644 --- a/module/defense/doc.py +++ b/module/defense/doc.py @@ -17,6 +17,7 @@ import pathlib from copy import deepcopy from docx import Document +from docx.enum.text import WD_BREAK from docx.shared import Cm, Mm from module.schema import Course, Student @@ -37,10 +38,11 @@ class DocPaper: section.right_margin = Cm(2) def add_paper(self, course: Course, student: Student): - temp_table = self._template.tables[0] - new_table = deepcopy(temp_table) + new_table = deepcopy(self._template.tables[0]) + para = self._doc.add_paragraph() para._p.addprevious(new_table._element) + para.add_run().add_break(WD_BREAK.PAGE) data_list = { '%CNAME%': course.name, @@ -48,9 +50,7 @@ class DocPaper: '%SNAME%': student.name, '%NO%': student.no, '%SO%': student.so, - '%Q1%': student.picked_questions[0].topic, - '%Q2%': student.picked_questions[1].topic, - '%Q3%': student.picked_questions[2].topic + '%Q%': '\n'.join([f'\t{idx + 1}、{i.topic}' for idx, i in enumerate(student.picked_questions)]) } # 替换表格中的占位符 diff --git a/template/template-defense-paper-paper.docx b/template/template-defense-paper-paper.docx index e6887ab..d1a4488 100644 Binary files a/template/template-defense-paper-paper.docx and b/template/template-defense-paper-paper.docx differ diff --git a/ui/components/widget.py b/ui/components/widget.py index f6cccc1..cfe49fc 100644 --- a/ui/components/widget.py +++ b/ui/components/widget.py @@ -109,3 +109,12 @@ class MyGroupHeaderCardWidget(GroupHeaderCardWidget): self.groupLayout.addWidget(group) self.groupWidgets.append(group) return group + + +class NotImplementedWidget(QWidget): + def __init__(self, parent=None): + super().__init__(parent) + self.layout = QVBoxLayout(self) + self.label = DisplayLabel("🚧", self) + self.label.setAlignment(Qt.AlignCenter) + self.layout.addWidget(self.label) diff --git a/ui/main.py b/ui/main.py index 118cbbf..9e3fd5e 100644 --- a/ui/main.py +++ b/ui/main.py @@ -20,7 +20,7 @@ from ui import MAIN_THEME_COLOR, BLUE_BACKGROUND_COLOR from ui.pyui.about_ui import AboutWidget from ui.pyui.achievement_ui import AchievementWidget from ui.pyui.defense_ui import DefenseWidget -from ui.pyui.picker_ui import PickerWidget +# from ui.pyui.picker_ui import PickerWidget from ui.pyui.test_ui import TestWidget from utils.function import RELEASE_ENV @@ -35,21 +35,21 @@ class MainWindow(MSFluentWindow): self.achievementInterface = AchievementWidget('Achievement Interface', self) self.defenseInterface = DefenseWidget('Defense Interface', self) self.aboutInterface = AboutWidget('About Interface', self) - self.pickerInterface = PickerWidget('Picker Interface', self) + # self.pickerInterface = PickerWidget('Picker Interface', self) if not RELEASE_ENV: self.testInterface = TestWidget('Test Interface', self) self.achievementInterface.error.connect(self.showError) self.defenseInterface.errorSignal.connect(self.showError) - self.pickerInterface.errorSignal.connect(self.showError) + # self.pickerInterface.errorSignal.connect(self.showError) self.initNavigation() self.initWindow() def initNavigation(self): self.addSubInterface(self.achievementInterface, FluentIcon.SPEED_HIGH, '达成度') - self.addSubInterface(self.defenseInterface, FluentIcon.FEEDBACK, '答辩题目') - self.addSubInterface(self.pickerInterface, FluentIcon.PEOPLE, '提问') + self.addSubInterface(self.defenseInterface, FluentIcon.FEEDBACK, '答辩') + # self.addSubInterface(self.pickerInterface, FluentIcon.PEOPLE, '提问') if not RELEASE_ENV: self.addSubInterface(self.testInterface, FluentIcon.VIEW, '测试') diff --git a/ui/pyui/achievement_ui.py b/ui/pyui/achievement_ui.py index 3fccfd4..1479ae2 100644 --- a/ui/pyui/achievement_ui.py +++ b/ui/pyui/achievement_ui.py @@ -40,7 +40,7 @@ class InputSettingCard(MyGroupHeaderCardWidget): self.setBorderRadius(8) self.btnHBoxLayout = QHBoxLayout(self) - self.openTemplateButton = HyperlinkButton("", "下载模板") + self.openTemplateButton = HyperlinkButton("", "模板下载") self.chooseFileButton = PushButton("打开") self.chooseFileButton.setFixedWidth(120) diff --git a/ui/pyui/defense_ui.py b/ui/pyui/defense_ui.py index a1dfb91..4b411a9 100644 --- a/ui/pyui/defense_ui.py +++ b/ui/pyui/defense_ui.py @@ -25,7 +25,7 @@ from qfluentwidgets import GroupHeaderCardWidget, PushButton, IconWidget, BodyLa from module.worker import DTGWorker from ui import MAIN_THEME_COLOR from ui.components.infobar import ProgressInfoBar -from ui.components.widget import Widget, MyGroupHeaderCardWidget +from ui.components.widget import Widget, MyGroupHeaderCardWidget, NotImplementedWidget from ui.pyui.sub.defense import ODModeExportSettings, ODModeSettings from utils.function import open_template @@ -65,9 +65,9 @@ class InitSettingCard(MyGroupHeaderCardWidget): self.sBtnHBoxLayout = QHBoxLayout(self) self.qBtnHBoxLayout = QHBoxLayout(self) - self.sTemplateButton = HyperlinkButton("", "下载模板") + self.sTemplateButton = HyperlinkButton("", "模板下载") self.chooseStudentButton = PushButton("打开") - self.qTemplateButton = HyperlinkButton("", "下载模板") + self.qTemplateButton = HyperlinkButton("", "模板下载") self.chooseQuestionButton = PushButton("打开") self.chooseStudentButton.setFixedWidth(120) @@ -345,7 +345,7 @@ class DefenseWidget(Widget): self.stack = QStackedWidget(self) self.menu = SegmentedWidget(self) self.dpMode = DPMode(self) - self.doMode = DOMode(self) + self.doMode = NotImplementedWidget(self) self.addSubInterface(self.dpMode, 'DPMode', '书面答辩') self.addSubInterface(self.doMode, 'DOMode', '口头答辩') diff --git a/ui/pyui/picker_ui.py b/ui/pyui/picker_ui.py index e05dfdd..7f018ce 100644 --- a/ui/pyui/picker_ui.py +++ b/ui/pyui/picker_ui.py @@ -36,7 +36,7 @@ class PickStudentMode(QWidget): self.vbox.setContentsMargins(0, 0, 0, 0) self.btnHBox = QHBoxLayout(self) - self.openTemplateBtn = HyperlinkButton("", "下载模板") + self.openTemplateBtn = HyperlinkButton("", "模板下载") self.chooseBtn = PushButton("打开") self.startButton = PrimaryPushButton(FluentIcon.PLAY_SOLID, "开始") self.bottomLayout = QHBoxLayout() diff --git a/ui/pyui/sub/defense.py b/ui/pyui/sub/defense.py index b1d3fd8..c866754 100644 --- a/ui/pyui/sub/defense.py +++ b/ui/pyui/sub/defense.py @@ -25,10 +25,10 @@ class ODModeSettings(MyGroupHeaderCardWidget): self.setTitle('输入选项') self.sBtn = PushButton('打开', self) - self.sBtnTemplate = HyperlinkButton('', '下载模板') + self.sBtnTemplate = HyperlinkButton('', '模板下载') self.qBtn = PushButton('打开', self) - self.bBtnTemplate = HyperlinkButton('', '下载模板') + self.bBtnTemplate = HyperlinkButton('', '模板下载') self.qNumber = SpinBox(self) self.qNumber.setRange(0, 999)