添加下载模板功能
This commit is contained in:
@@ -1,18 +1,43 @@
|
||||
from functools import wraps
|
||||
from typing import Literal, Callable
|
||||
|
||||
from PySide6.QtCore import Qt, Signal, QThread
|
||||
from PySide6.QtWidgets import QHBoxLayout, QVBoxLayout, QFileDialog, QButtonGroup, QWidget
|
||||
from PySide6.QtCore import Qt, Signal, QThread, QEvent
|
||||
from PySide6.QtWidgets import QHBoxLayout, QVBoxLayout, QFileDialog, QButtonGroup, QWidget, QApplication
|
||||
from qfluentwidgets import GroupHeaderCardWidget, PushButton, IconWidget, BodyLabel, PrimaryPushButton, FluentIcon, \
|
||||
LineEdit, RadioButton
|
||||
LineEdit, RadioButton, HyperlinkButton, FlyoutViewBase, TeachingTipView, TeachingTip, TeachingTipTailPosition
|
||||
|
||||
from module.worker import DTGWorker
|
||||
from ui import MAIN_THEME_COLOR
|
||||
from ui.components.infobar import ProgressInfoBar
|
||||
from ui.components.widget import Widget
|
||||
from ui.components.widget import Widget, MyGroupHeaderCardWidget
|
||||
from utils.function import open_template
|
||||
|
||||
|
||||
class InitSettingCard(GroupHeaderCardWidget):
|
||||
class ChooseTemplateView(FlyoutViewBase):
|
||||
closed = Signal()
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.vBoxLayout = QVBoxLayout(self)
|
||||
QApplication.instance().installEventFilter(self)
|
||||
|
||||
def paintEvent(self, e):
|
||||
...
|
||||
|
||||
def eventFilter(self, watched, event):
|
||||
if event.type() == QEvent.MouseButtonPress:
|
||||
if not self.rect().contains(self.mapFromGlobal(event.globalPosition().toPoint())):
|
||||
self.closed.emit()
|
||||
return super().eventFilter(watched, event)
|
||||
|
||||
def addTemplate(self, content: str, cb: Callable[[], None]):
|
||||
label = HyperlinkButton("", content)
|
||||
self.vBoxLayout.addWidget(label)
|
||||
label.clicked.connect(cb)
|
||||
label.clicked.connect(self.closed.emit)
|
||||
|
||||
|
||||
class InitSettingCard(MyGroupHeaderCardWidget):
|
||||
chooseSignal = Signal(str, str)
|
||||
|
||||
def __init__(self, parent=None):
|
||||
@@ -21,19 +46,29 @@ class InitSettingCard(GroupHeaderCardWidget):
|
||||
self.setTitle("输入选项")
|
||||
self.setBorderRadius(8)
|
||||
|
||||
self.sBtnHBoxLayout = QHBoxLayout(self)
|
||||
self.qBtnHBoxLayout = QHBoxLayout(self)
|
||||
self.sTemplateButton = HyperlinkButton("", "下载模板")
|
||||
self.chooseStudentButton = PushButton("打开")
|
||||
self.qTemplateButton = HyperlinkButton("", "下载模板")
|
||||
self.chooseQuestionButton = PushButton("打开")
|
||||
|
||||
self.chooseStudentButton.setFixedWidth(120)
|
||||
self.chooseQuestionButton.setFixedWidth(120)
|
||||
self.sBtnHBoxLayout.addWidget(self.sTemplateButton)
|
||||
self.sBtnHBoxLayout.addWidget(self.chooseStudentButton)
|
||||
self.qBtnHBoxLayout.addWidget(self.qTemplateButton)
|
||||
self.qBtnHBoxLayout.addWidget(self.chooseQuestionButton)
|
||||
|
||||
self.stuGroup = self.addGroup(FluentIcon.DOCUMENT, "学生名单", "选择学生名单文件", self.chooseStudentButton)
|
||||
self.QueGroup = self.addGroup(FluentIcon.DOCUMENT, "题库", "选择题库文件", self.chooseQuestionButton)
|
||||
self.stuGroup = self.addGroup(FluentIcon.DOCUMENT, "学生名单", "选择学生名单文件", self.sBtnHBoxLayout)
|
||||
self.QueGroup = self.addGroup(FluentIcon.DOCUMENT, "题库", "选择题库文件", self.qBtnHBoxLayout)
|
||||
|
||||
self.chooseStudentButton.clicked.connect(
|
||||
lambda: self.choose_file(self.stuGroup.setContent, "已选择文件:", lambda x: self.chooseSignal.emit('s', x)))
|
||||
self.chooseQuestionButton.clicked.connect(
|
||||
lambda: self.choose_file(self.QueGroup.setContent, "已选择文件:", lambda x: self.chooseSignal.emit('q', x)))
|
||||
self.qTemplateButton.clicked.connect(lambda: open_template('template-defense-paper-questions.xlsm', self))
|
||||
self.sTemplateButton.clicked.connect(self.show_template_list_view)
|
||||
|
||||
def choose_file(
|
||||
self,
|
||||
@@ -47,6 +82,19 @@ class InitSettingCard(GroupHeaderCardWidget):
|
||||
if cb:
|
||||
cb(file_path)
|
||||
|
||||
def show_template_list_view(self):
|
||||
view = ChooseTemplateView(self)
|
||||
view.addTemplate("普通模板", lambda: open_template("template-defense-paper-student-1.xlsm", self))
|
||||
view.addTemplate("达成度模板", lambda: open_template("template-defense-paper-student-2.xlsm", self))
|
||||
w = TeachingTip.make(
|
||||
target=self.sTemplateButton,
|
||||
view=view,
|
||||
tailPosition=TeachingTipTailPosition.TOP,
|
||||
duration=-1,
|
||||
parent=self
|
||||
)
|
||||
view.closed.connect(w.close)
|
||||
|
||||
|
||||
class ExportSettingsCard(GroupHeaderCardWidget):
|
||||
startSignal = Signal()
|
||||
|
||||
Reference in New Issue
Block a user