diff --git a/工具v2/Qt面板.py b/工具v2/Qt面板.py index 211c71c3..bfabbd1b 100644 --- a/工具v2/Qt面板.py +++ b/工具v2/Qt面板.py @@ -28,7 +28,7 @@ class MyWindow(QMainWindow,Ui_MainWindow): self.action_kxth.triggered.connect(lambda: run_command("寻找空闲题号",[])) self.action_xtbd.triggered.connect(lambda: run_command("新题比对",[])) self.action_plsl.triggered.connect(lambda: run_command("批量收录题目",[])) - self.action_tjgl.triggered.connect(lambda: run_command("添加关联题目",["添加关联题目.py"])) + self.action_tjgl.triggered.connect(lambda: run_command("添加关联题目",[])) self.action_tjzd.triggered.connect(lambda: run_command("修改metadata",["文本文件/metadata.txt"])) self.action_LaTeXedit.triggered.connect(lambda: run_command("LaTeX编辑题目答案及提示",["latex编辑题目答案及提示.py"])) self.action_jsonedit.triggered.connect(lambda: run_command("json编辑题目综合信息",["json编辑题目综合信息.py"])) diff --git a/工具v2/Ui_添加关联题目.py b/工具v2/Ui_添加关联题目.py new file mode 100644 index 00000000..09c6c6ff --- /dev/null +++ b/工具v2/Ui_添加关联题目.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- + +################################################################################ +## Form generated from reading UI file '添加关联题目.ui' +## +## Created by: Qt User Interface Compiler version 6.6.2 +## +## WARNING! All changes made in this file will be lost when recompiling UI file! +################################################################################ + +from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, + QMetaObject, QObject, QPoint, QRect, + QSize, QTime, QUrl, Qt) +from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, + QFont, QFontDatabase, QGradient, QIcon, + QImage, QKeySequence, QLinearGradient, QPainter, + QPalette, QPixmap, QRadialGradient, QTransform) +from PySide6.QtWidgets import (QApplication, QHBoxLayout, QLabel, QLineEdit, + QPushButton, QSizePolicy, QVBoxLayout, QWidget) + +class Ui_Form(object): + def setupUi(self, Form): + if not Form.objectName(): + Form.setObjectName(u"Form") + Form.resize(351, 104) + self.pushButton_exec = QPushButton(Form) + self.pushButton_exec.setObjectName(u"pushButton_exec") + self.pushButton_exec.setGeometry(QRect(240, 10, 81, 81)) + font = QFont() + font.setBold(True) + self.pushButton_exec.setFont(font) + self.widget = QWidget(Form) + self.widget.setObjectName(u"widget") + self.widget.setGeometry(QRect(30, 10, 196, 80)) + self.verticalLayout = QVBoxLayout(self.widget) + self.verticalLayout.setObjectName(u"verticalLayout") + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout = QHBoxLayout() + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.label = QLabel(self.widget) + self.label.setObjectName(u"label") + self.label.setMinimumSize(QSize(60, 0)) + + self.horizontalLayout.addWidget(self.label) + + self.lineEdit_oldids = QLineEdit(self.widget) + self.lineEdit_oldids.setObjectName(u"lineEdit_oldids") + + self.horizontalLayout.addWidget(self.lineEdit_oldids) + + + self.verticalLayout.addLayout(self.horizontalLayout) + + self.horizontalLayout_2 = QHBoxLayout() + self.horizontalLayout_2.setObjectName(u"horizontalLayout_2") + self.label_2 = QLabel(self.widget) + self.label_2.setObjectName(u"label_2") + + self.horizontalLayout_2.addWidget(self.label_2) + + self.lineEdit_newid = QLineEdit(self.widget) + self.lineEdit_newid.setObjectName(u"lineEdit_newid") + + self.horizontalLayout_2.addWidget(self.lineEdit_newid) + + + self.verticalLayout.addLayout(self.horizontalLayout_2) + + self.horizontalLayout_3 = QHBoxLayout() + self.horizontalLayout_3.setObjectName(u"horizontalLayout_3") + self.label_3 = QLabel(self.widget) + self.label_3.setObjectName(u"label_3") + self.label_3.setMinimumSize(QSize(60, 0)) + + self.horizontalLayout_3.addWidget(self.label_3) + + self.lineEdit_editor = QLineEdit(self.widget) + self.lineEdit_editor.setObjectName(u"lineEdit_editor") + + self.horizontalLayout_3.addWidget(self.lineEdit_editor) + + + self.verticalLayout.addLayout(self.horizontalLayout_3) + + + self.retranslateUi(Form) + + QMetaObject.connectSlotsByName(Form) + # setupUi + + def retranslateUi(self, Form): + Form.setWindowTitle(QCoreApplication.translate("Form", u"\u6dfb\u52a0\u5173\u8054\u9898\u76ee", None)) + self.pushButton_exec.setText(QCoreApplication.translate("Form", u"\u6dfb\u52a0\u5173\u8054\u9898\u76ee", None)) + self.label.setText(QCoreApplication.translate("Form", u"\u65e7\u9898\u53f7", None)) + self.label_2.setText(QCoreApplication.translate("Form", u"\u65b0\u8d77\u59cb\u9898\u53f7", None)) + self.label_3.setText(QCoreApplication.translate("Form", u"\u7f16\u8f91\u8005", None)) + # retranslateUi + diff --git a/工具v2/工具面板.py b/工具v2/工具面板.py index 86ac8570..3ed4999f 100644 --- a/工具v2/工具面板.py +++ b/工具v2/工具面板.py @@ -71,7 +71,7 @@ menubar.add_cascade(label = "录入", menu = ImportMenu) ImportMenu.add_command(label = "寻找空闲题号", command = lambda: SetButton("寻找空闲题号",[])) ImportMenu.add_separator() ImportMenu.add_command(label = "批量收录题目", command = lambda: SetButton("批量收录题目",[])) -ImportMenu.add_command(label = "添加关联题目", command = lambda: SetButton("添加关联题目",["添加关联题目.py"])) +ImportMenu.add_command(label = "添加关联题目", command = lambda: SetButton("添加关联题目",[])) ImportMenu.add_separator() ImportMenu.add_command(label = "新题比对", command = lambda: SetButton("新题比对",[])) diff --git a/工具v2/添加关联题目.py b/工具v2/添加关联题目.py index b572d014..ef9c34b2 100644 --- a/工具v2/添加关联题目.py +++ b/工具v2/添加关联题目.py @@ -1,29 +1,70 @@ -old_ids = "20462,20463" # 需要添加关联题目的id字符串 -starting_id = "1" # 目的地的id字符串从这个位置后的首个空闲开始, 其中空闲位置需不少于old_ids中的题目数量 20040124修改 -editor = "王伟叶" # 修改人姓名 - +from PySide6.QtWidgets import QWidget, QApplication, QFileDialog +from Ui_添加关联题目 import Ui_Form from database_tools import * -tempfilepath = "临时文件/problem_edit.json" - -pro_dict = load_dict("../题库0.3/problems.json") -obj_dict = load_dict("../题库0.3/LessonObj.json") -pro_dict_raw_string = ReadTextFile("../题库0.3/problems.json") -configjson = load_dict("文本文件/config.json")["默认完整编译题目模式"] +class MyWindow(QWidget,Ui_Form): + def __init__(self): + super().__init__() + self.setupUi(self) + self.bind() + + def bind(self): + self.pushButton_exec.clicked.connect(self.exec) + + def exec(self): + old_ids = self.lineEdit_oldids.text().replace(",",",").replace(":",":").strip() # 需要添加关联题目的id字符串 + starting_id = self.lineEdit_newid.text().strip() # 目的地的id字符串从这个位置后的首个空闲开始, 其中空闲位置需不少于old_ids中的题目数量 20040124修改 + editor = self.lineEdit_editor.text().strip() # 修改人姓名 -links = CreateIDLinks(generate_number_set(old_ids),generate_number_set(NextSpareIDBlock(starting_id,pro_dict)),pro_dict) -CreateRelatedProblems(links,pro_dict,tempfilepath,editor) -print("编辑完毕后, 保存关闭文件继续.") -os.system("code -w -g "+tempfilepath) #-w表示关闭窗口后继续下一步 + tempfilepath = "临时文件/problem_edit.json" -editedid_list = ImportRelatedProblems(tempfilepath,"../题库0.3/problems.json") + pro_dict = load_dict("../题库0.3/problems.json") + obj_dict = load_dict("../题库0.3/LessonObj.json") + pro_dict_raw_string = ReadTextFile("../题库0.3/problems.json") + configjson = { + "输出路径": "临时文件", + "教师版": True, + "字段显示设置": { + "题后空间": True, + "课时目标": True, + "题目标签": True, + "答案": True, + "解答与提示": True, + "使用记录": [3,-1], + "使用记录说明": "[a,b]表示显示最好的a个和最差b个, 有-2表示不显示, 无-2但有-1表示全部显示", + "来源": True, + "备注": True, + "届别": [] + } + } -pro_dict = load_dict("../题库0.3/problems.json") -if not XeLaTeXTest(editedid_list,pro_dict,obj_dict,configjson,templatepath="模板文件/讲义模板.txt",outdir = "临时文件",outfile = "problems_test.tex"): - SaveTextFile(pro_dict_raw_string,"../题库0.3/Problems.json") - print("编译失败, 题库文件退回原状") -else: - print("编译成功, 已汇入题库") \ No newline at end of file + links = CreateIDLinks(generate_number_set(old_ids),generate_number_set(NextSpareIDBlock(starting_id,pro_dict)),pro_dict) + CreateRelatedProblems(links,pro_dict,tempfilepath,editor) + + print("编辑完毕后, 保存关闭文件继续.") + os.system("code -w -g "+tempfilepath) #-w表示关闭窗口后继续下一步 + + editedid_list = ImportRelatedProblems(tempfilepath,"../题库0.3/problems.json") + + pro_dict = load_dict("../题库0.3/problems.json") + + if not XeLaTeXTest(editedid_list,pro_dict,obj_dict,configjson,templatepath="模板文件/讲义模板.txt",outdir = "临时文件",outfile = "problems_test.tex"): + SaveTextFile(pro_dict_raw_string,"../题库0.3/Problems.json") + print("编译失败, 题库文件退回原状") + else: + print("编译成功, 已汇入题库") + self.close() + + + + + +if __name__ == '__main__': + app = QApplication([]) + windows = MyWindow() + windows.show() + app.exec() + diff --git a/工具v2/添加关联题目.ui b/工具v2/添加关联题目.ui new file mode 100644 index 00000000..ef977308 --- /dev/null +++ b/工具v2/添加关联题目.ui @@ -0,0 +1,103 @@ + + + Form + + + + 0 + 0 + 351 + 104 + + + + 添加关联题目 + + + + + 240 + 10 + 81 + 81 + + + + + true + + + + 添加关联题目 + + + + + + 30 + 10 + 196 + 80 + + + + + + + + + + 60 + 0 + + + + 旧题号 + + + + + + + + + + + + + + 新起始题号 + + + + + + + + + + + + + + + 60 + 0 + + + + 编辑者 + + + + + + + + + + + + + + diff --git a/工具v2/添加关联题目old.py b/工具v2/添加关联题目old.py new file mode 100644 index 00000000..b572d014 --- /dev/null +++ b/工具v2/添加关联题目old.py @@ -0,0 +1,29 @@ +old_ids = "20462,20463" # 需要添加关联题目的id字符串 +starting_id = "1" # 目的地的id字符串从这个位置后的首个空闲开始, 其中空闲位置需不少于old_ids中的题目数量 20040124修改 +editor = "王伟叶" # 修改人姓名 + +from database_tools import * + +tempfilepath = "临时文件/problem_edit.json" + +pro_dict = load_dict("../题库0.3/problems.json") +obj_dict = load_dict("../题库0.3/LessonObj.json") +pro_dict_raw_string = ReadTextFile("../题库0.3/problems.json") +configjson = load_dict("文本文件/config.json")["默认完整编译题目模式"] + + +links = CreateIDLinks(generate_number_set(old_ids),generate_number_set(NextSpareIDBlock(starting_id,pro_dict)),pro_dict) +CreateRelatedProblems(links,pro_dict,tempfilepath,editor) + +print("编辑完毕后, 保存关闭文件继续.") +os.system("code -w -g "+tempfilepath) #-w表示关闭窗口后继续下一步 + +editedid_list = ImportRelatedProblems(tempfilepath,"../题库0.3/problems.json") + +pro_dict = load_dict("../题库0.3/problems.json") + +if not XeLaTeXTest(editedid_list,pro_dict,obj_dict,configjson,templatepath="模板文件/讲义模板.txt",outdir = "临时文件",outfile = "problems_test.tex"): + SaveTextFile(pro_dict_raw_string,"../题库0.3/Problems.json") + print("编译失败, 题库文件退回原状") +else: + print("编译成功, 已汇入题库") \ No newline at end of file