From e5c17d6b107e672aeea6dce49aad6fd25aee4f86 Mon Sep 17 00:00:00 2001 From: "weiye.wang" Date: Fri, 23 Feb 2024 21:53:38 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=9B=E9=80=89=E9=A2=98=E7=9B=AE=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E5=AE=8C=E6=88=90UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 工具v2/Ui_题号筛选器.py | 124 ++++++++++++++++ 工具v2/guipanel.py | 70 +++++---- 工具v2/题号筛选器.ui | 304 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 469 insertions(+), 29 deletions(-) create mode 100644 工具v2/Ui_题号筛选器.py create mode 100644 工具v2/题号筛选器.ui diff --git a/工具v2/Ui_题号筛选器.py b/工具v2/Ui_题号筛选器.py new file mode 100644 index 00000000..f577ec62 --- /dev/null +++ b/工具v2/Ui_题号筛选器.py @@ -0,0 +1,124 @@ +# -*- 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, QCheckBox, QFrame, QLCDNumber, + QLabel, QLineEdit, QPushButton, QSizePolicy, + QWidget) + +class Ui_Form(object): + def setupUi(self, Form): + if not Form.objectName(): + Form.setObjectName(u"Form") + Form.resize(400, 533) + Form.setWindowOpacity(1.000000000000000) + self.pushButton_content = QPushButton(Form) + self.pushButton_content.setObjectName(u"pushButton_content") + self.pushButton_content.setGeometry(QRect(20, 20, 75, 24)) + self.pushButton_obj = QPushButton(Form) + self.pushButton_obj.setObjectName(u"pushButton_obj") + self.pushButton_obj.setGeometry(QRect(20, 50, 75, 24)) + self.pushButton_tag = QPushButton(Form) + self.pushButton_tag.setObjectName(u"pushButton_tag") + self.pushButton_tag.setGeometry(QRect(20, 80, 75, 24)) + self.pushButton_usage = QPushButton(Form) + self.pushButton_usage.setObjectName(u"pushButton_usage") + self.pushButton_usage.setGeometry(QRect(20, 110, 75, 24)) + self.pushButton_origin = QPushButton(Form) + self.pushButton_origin.setObjectName(u"pushButton_origin") + self.pushButton_origin.setGeometry(QRect(20, 140, 75, 24)) + self.pushButton_genre = QPushButton(Form) + self.pushButton_genre.setObjectName(u"pushButton_genre") + self.pushButton_genre.setGeometry(QRect(20, 170, 75, 24)) + self.pushButton_ans = QPushButton(Form) + self.pushButton_ans.setObjectName(u"pushButton_ans") + self.pushButton_ans.setGeometry(QRect(20, 200, 75, 24)) + self.pushButton_solution = QPushButton(Form) + self.pushButton_solution.setObjectName(u"pushButton_solution") + self.pushButton_solution.setGeometry(QRect(20, 230, 75, 24)) + self.pushButton_same = QPushButton(Form) + self.pushButton_same.setObjectName(u"pushButton_same") + self.pushButton_same.setGeometry(QRect(20, 260, 75, 24)) + self.pushButton_related = QPushButton(Form) + self.pushButton_related.setObjectName(u"pushButton_related") + self.pushButton_related.setGeometry(QRect(20, 290, 75, 24)) + self.pushButton_remark = QPushButton(Form) + self.pushButton_remark.setObjectName(u"pushButton_remark") + self.pushButton_remark.setGeometry(QRect(20, 320, 75, 24)) + self.pushButton_exec = QPushButton(Form) + self.pushButton_exec.setObjectName(u"pushButton_exec") + self.pushButton_exec.setGeometry(QRect(20, 460, 75, 48)) + self.pushButton_undo = QPushButton(Form) + self.pushButton_undo.setObjectName(u"pushButton_undo") + self.pushButton_undo.setGeometry(QRect(20, 370, 75, 24)) + self.pushButton_clearAll = QPushButton(Form) + self.pushButton_clearAll.setObjectName(u"pushButton_clearAll") + self.pushButton_clearAll.setGeometry(QRect(20, 400, 75, 24)) + self.label_conditions = QLabel(Form) + self.label_conditions.setObjectName(u"label_conditions") + self.label_conditions.setGeometry(QRect(120, 100, 261, 331)) + self.label_conditions.setFrameShape(QFrame.StyledPanel) + self.label_conditions.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignTop) + self.label_conditions.setWordWrap(False) + self.label = QLabel(Form) + self.label.setObjectName(u"label") + self.label.setGeometry(QRect(120, 80, 71, 16)) + self.checkBox_not = QCheckBox(Form) + self.checkBox_not.setObjectName(u"checkBox_not") + self.checkBox_not.setGeometry(QRect(280, 20, 111, 20)) + self.lineEdit_SingleCondition = QLineEdit(Form) + self.lineEdit_SingleCondition.setObjectName(u"lineEdit_SingleCondition") + self.lineEdit_SingleCondition.setGeometry(QRect(120, 50, 261, 20)) + self.label_2 = QLabel(Form) + self.label_2.setObjectName(u"label_2") + self.label_2.setGeometry(QRect(120, 20, 151, 16)) + self.label_3 = QLabel(Form) + self.label_3.setObjectName(u"label_3") + self.label_3.setGeometry(QRect(120, 440, 91, 16)) + self.lcdNumber_resCount = QLCDNumber(Form) + self.lcdNumber_resCount.setObjectName(u"lcdNumber_resCount") + self.lcdNumber_resCount.setGeometry(QRect(220, 460, 161, 51)) + self.lcdNumber_resCount.setDigitCount(6) + self.lcdNumber_resCount.setProperty("value", 0.000000000000000) + + self.retranslateUi(Form) + + QMetaObject.connectSlotsByName(Form) + # setupUi + + def retranslateUi(self, Form): + Form.setWindowTitle(QCoreApplication.translate("Form", u"\u9898\u53f7\u7b5b\u9009\u5668", None)) + self.pushButton_content.setText(QCoreApplication.translate("Form", u"\u5185\u5bb9", None)) + self.pushButton_obj.setText(QCoreApplication.translate("Form", u"\u76ee\u6807\u7f16\u53f7", None)) + self.pushButton_tag.setText(QCoreApplication.translate("Form", u"\u6807\u7b7e", None)) + self.pushButton_usage.setText(QCoreApplication.translate("Form", u"\u4f7f\u7528\u8bb0\u5f55", None)) + self.pushButton_origin.setText(QCoreApplication.translate("Form", u"\u51fa\u5904", None)) + self.pushButton_genre.setText(QCoreApplication.translate("Form", u"\u9898\u76ee\u7c7b\u578b", None)) + self.pushButton_ans.setText(QCoreApplication.translate("Form", u"\u7b54\u6848", None)) + self.pushButton_solution.setText(QCoreApplication.translate("Form", u"\u89e3\u7b54\u4e0e\u63d0\u793a", None)) + self.pushButton_same.setText(QCoreApplication.translate("Form", u"\u76f8\u540c\u9898\u53f7", None)) + self.pushButton_related.setText(QCoreApplication.translate("Form", u"\u76f8\u5173\u9898\u53f7", None)) + self.pushButton_remark.setText(QCoreApplication.translate("Form", u"\u5907\u6ce8", None)) + self.pushButton_exec.setText(QCoreApplication.translate("Form", u"\u8fd0\u884c", None)) + self.pushButton_undo.setText(QCoreApplication.translate("Form", u"\u64a4\u9500\u4e0a\u4e00\u4e2a", None)) + self.pushButton_clearAll.setText(QCoreApplication.translate("Form", u"\u6e05\u9664", None)) + self.label_conditions.setText("") + self.label.setText(QCoreApplication.translate("Form", u"\u5f53\u524d\u6761\u4ef6:", None)) + self.checkBox_not.setText(QCoreApplication.translate("Form", u"\u9009\u4e2d\u8868\u793a\u4e0d\u5305\u542b", None)) + self.label_2.setText(QCoreApplication.translate("Form", u"\u8f93\u5165\u6761\u4ef6, \u7528\",\"\u5206\u9694\u8868\u793a\"\u6216\"", None)) + self.label_3.setText(QCoreApplication.translate("Form", u"\u7b5b\u9009\u7ed3\u679c\u6570\u76ee:", None)) + # retranslateUi + diff --git a/工具v2/guipanel.py b/工具v2/guipanel.py index e77f7b7f..6ae1011e 100644 --- a/工具v2/guipanel.py +++ b/工具v2/guipanel.py @@ -1,45 +1,57 @@ from PySide6.QtWidgets import QWidget, QApplication, QLineEdit, QVBoxLayout -from Ui_计算器 import Ui_Form +from Ui_题号筛选器 import Ui_Form +from database_tools import * class MyWindow(QWidget,Ui_Form): def __init__(self): super().__init__() self.setupUi(self) - - self.result = "" - + self.conditions = [] + pro_dict = load_dict("../题库0.3/Problems.json") + self.lcdNumber_resCount.display(len(pro_dict)) self.bind() def bind(self): - self.pushButton_0.clicked.connect(lambda: self.addNumber('0')) - self.pushButton_1.clicked.connect(lambda: self.addNumber('1')) - self.pushButton_2.clicked.connect(lambda: self.addNumber('2')) - self.pushButton_3.clicked.connect(lambda: self.addNumber('3')) - self.pushButton_4.clicked.connect(lambda: self.addNumber('4')) - self.pushButton_5.clicked.connect(lambda: self.addNumber('5')) - self.pushButton_6.clicked.connect(lambda: self.addNumber('6')) - self.pushButton_7.clicked.connect(lambda: self.addNumber('7')) - self.pushButton_8.clicked.connect(lambda: self.addNumber('8')) - self.pushButton_9.clicked.connect(lambda: self.addNumber('9')) - self.pushButton_add.clicked.connect(lambda: self.addNumber('+')) - self.pushButton_sub.clicked.connect(lambda: self.addNumber('-')) - self.pushButton_times.clicked.connect(lambda: self.addNumber('*')) - self.pushButton_div.clicked.connect(lambda: self.addNumber('/')) - self.pushButton_dot.clicked.connect(lambda: self.addNumber('.')) - self.pushButton_eq.clicked.connect(self.equal) + self.pushButton_content.clicked.connect(lambda: self.add_content("content")) + self.pushButton_obj.clicked.connect(lambda: self.add_content("objs")) + self.pushButton_tag.clicked.connect(lambda: self.add_content("tags")) + self.pushButton_usage.clicked.connect(lambda: self.add_content("usages")) + self.pushButton_origin.clicked.connect(lambda: self.add_content("origin")) + self.pushButton_genre.clicked.connect(lambda: self.add_content("genre")) + self.pushButton_ans.clicked.connect(lambda: self.add_content("ans")) + self.pushButton_solution.clicked.connect(lambda: self.add_content("solution")) + self.pushButton_same.clicked.connect(lambda: self.add_content("same")) + self.pushButton_related.clicked.connect(lambda: self.add_content("related")) + self.pushButton_remark.clicked.connect(lambda: self.add_content("remark")) + self.pushButton_undo.clicked.connect(self.undolast) + self.pushButton_clearAll.clicked.connect(self.clearConditions) + + + def add_content(self,field): + self.conditions.append((field,self.checkBox_not.isChecked(),self.lineEdit_SingleCondition.text())) + self.showConditions() + def undolast(self): + self.conditions = self.conditions[:-1].copy() + self.showConditions() + def clearConditions(self): + self.conditions = [] + self.showConditions() + def showConditions(self): + text = "" + for cond in self.conditions: + field, flag_not, matchexp = cond + text += f"字段 {field} 中{'没有' if flag_not else '有 '}{' 或 '.join([t.strip() for t in matchexp.split(',')])}\n" + self.label_conditions.setText(text) + + - def addNumber(self, number): - self.lineEdit.clear() - self.result += number - self.lineEdit.setText(self.result) - - def equal(self): - self.numberResult = eval(self.result) - self.lineEdit.setText(str(self.numberResult)) if __name__ == '__main__': app = QApplication([]) windows = MyWindow() windows.show() - app.exec() \ No newline at end of file + app.exec() + + +#self.conditions.append(("content",True,"OBSOLETE")) \ No newline at end of file diff --git a/工具v2/题号筛选器.ui b/工具v2/题号筛选器.ui new file mode 100644 index 00000000..26bfda96 --- /dev/null +++ b/工具v2/题号筛选器.ui @@ -0,0 +1,304 @@ + + + Form + + + + 0 + 0 + 400 + 533 + + + + 题号筛选器 + + + 1.000000000000000 + + + + + 20 + 20 + 75 + 24 + + + + 内容 + + + + + + 20 + 50 + 75 + 24 + + + + 目标编号 + + + + + + 20 + 80 + 75 + 24 + + + + 标签 + + + + + + 20 + 110 + 75 + 24 + + + + 使用记录 + + + + + + 20 + 140 + 75 + 24 + + + + 出处 + + + + + + 20 + 170 + 75 + 24 + + + + 题目类型 + + + + + + 20 + 200 + 75 + 24 + + + + 答案 + + + + + + 20 + 230 + 75 + 24 + + + + 解答与提示 + + + + + + 20 + 260 + 75 + 24 + + + + 相同题号 + + + + + + 20 + 290 + 75 + 24 + + + + 相关题号 + + + + + + 20 + 320 + 75 + 24 + + + + 备注 + + + + + + 20 + 460 + 75 + 48 + + + + 运行 + + + + + + 20 + 370 + 75 + 24 + + + + 撤销上一个 + + + + + + 20 + 400 + 75 + 24 + + + + 清除 + + + + + + 120 + 100 + 261 + 331 + + + + QFrame::StyledPanel + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + false + + + + + + 120 + 80 + 71 + 16 + + + + 当前条件: + + + + + + 280 + 20 + 111 + 20 + + + + 选中表示不包含 + + + + + + 120 + 50 + 261 + 20 + + + + + + + 120 + 20 + 151 + 16 + + + + 输入条件, 用","分隔表示"或" + + + + + + 120 + 440 + 91 + 16 + + + + 筛选结果数目: + + + + + + 220 + 460 + 161 + 51 + + + + 6 + + + 0.000000000000000 + + + + + +