提取答案功能用Qt重写, 并加入两种面板

This commit is contained in:
weiye.wang 2024-03-03 15:41:16 +08:00
parent 85ce9ae92c
commit 856cd563ed
5 changed files with 316 additions and 2 deletions

View File

@ -35,7 +35,7 @@ class MyWindow(QMainWindow,Ui_MainWindow):
self.action_sddr.triggered.connect(lambda: run_command("手动统计结果导入",["临时文件/手动统计结果.txt"]))#已完成
self.action_tkdr.triggered.connect(lambda: run_command("统考数据导入",[]))#已完成
self.action_dygg.triggered.connect(lambda: run_command("单元挂钩",["单元挂钩.py"]))
self.action_tqda.triggered.connect(lambda: run_command("文件或剪贴板提取答案",["文件或剪贴板提取答案.py"]))
self.action_tqda.triggered.connect(lambda: run_command("文件或文本框提取答案",[]))#已完成
self.action_hbsy.triggered.connect(lambda: run_command("合并使用记录并排序",[]))#已完成
self.action_tjjc.triggered.connect(lambda: run_command("添加基础知识梳理",["添加基础知识梳理.py"]))
self.action_sxth.triggered.connect(lambda: run_command("关键字筛选题号",[]))#已完成

View File

@ -0,0 +1,84 @@
# -*- 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, QLabel, QLineEdit, QPlainTextEdit,
QPushButton, QRadioButton, QSizePolicy, QWidget)
class Ui_Form(object):
def setupUi(self, Form):
if not Form.objectName():
Form.setObjectName(u"Form")
Form.resize(690, 421)
self.plainTextEdit_rawString = QPlainTextEdit(Form)
self.plainTextEdit_rawString.setObjectName(u"plainTextEdit_rawString")
self.plainTextEdit_rawString.setGeometry(QRect(10, 80, 311, 331))
self.lineEdit_filepath = QLineEdit(Form)
self.lineEdit_filepath.setObjectName(u"lineEdit_filepath")
self.lineEdit_filepath.setGeometry(QRect(10, 30, 331, 20))
self.lineEdit_filepath.setReadOnly(True)
self.label = QLabel(Form)
self.label.setObjectName(u"label")
self.label.setGeometry(QRect(10, 10, 54, 16))
self.label_2 = QLabel(Form)
self.label_2.setObjectName(u"label_2")
self.label_2.setGeometry(QRect(10, 60, 101, 16))
self.lineEdit_2 = QLineEdit(Form)
self.lineEdit_2.setObjectName(u"lineEdit_2")
self.lineEdit_2.setGeometry(QRect(462, 30, 211, 20))
self.label_3 = QLabel(Form)
self.label_3.setObjectName(u"label_3")
self.label_3.setGeometry(QRect(460, 10, 54, 16))
self.radioButton_text = QRadioButton(Form)
self.radioButton_text.setObjectName(u"radioButton_text")
self.radioButton_text.setGeometry(QRect(580, 70, 95, 20))
self.radioButton_file = QRadioButton(Form)
self.radioButton_file.setObjectName(u"radioButton_file")
self.radioButton_file.setGeometry(QRect(580, 100, 95, 20))
self.pushButton_selectfilepath = QPushButton(Form)
self.pushButton_selectfilepath.setObjectName(u"pushButton_selectfilepath")
self.pushButton_selectfilepath.setGeometry(QRect(350, 30, 101, 24))
self.label_4 = QLabel(Form)
self.label_4.setObjectName(u"label_4")
self.label_4.setGeometry(QRect(330, 60, 91, 16))
self.plainTextEdit_ans = QPlainTextEdit(Form)
self.plainTextEdit_ans.setObjectName(u"plainTextEdit_ans")
self.plainTextEdit_ans.setGeometry(QRect(330, 80, 241, 331))
self.pushButton_exec = QPushButton(Form)
self.pushButton_exec.setObjectName(u"pushButton_exec")
self.pushButton_exec.setGeometry(QRect(580, 130, 101, 281))
font = QFont()
font.setBold(True)
self.pushButton_exec.setFont(font)
self.retranslateUi(Form)
QMetaObject.connectSlotsByName(Form)
# setupUi
def retranslateUi(self, Form):
Form.setWindowTitle(QCoreApplication.translate("Form", u"\u6587\u4ef6\u6216\u6587\u672c\u6846\u63d0\u53d6\u7b54\u6848", None))
self.label.setText(QCoreApplication.translate("Form", u"\u6587\u4ef6\u8def\u5f84", None))
self.label_2.setText(QCoreApplication.translate("Form", u"\u542b\u7b54\u6848\u7684\u6e90\u4ee3\u7801", None))
self.lineEdit_2.setText(QCoreApplication.translate("Form", u"\u7b54\u6848: \\textcolor{blue}{", None))
self.label_3.setText(QCoreApplication.translate("Form", u"\u7b54\u6848\u524d\u7f00", None))
self.radioButton_text.setText(QCoreApplication.translate("Form", u"\u6587\u672c\u6846\u751f\u6210", None))
self.radioButton_file.setText(QCoreApplication.translate("Form", u"\u6587\u4ef6\u751f\u6210", None))
self.pushButton_selectfilepath.setText(QCoreApplication.translate("Form", u"\u9009\u62e9\u6587\u4ef6\u8def\u5f84", None))
self.label_4.setText(QCoreApplication.translate("Form", u"\u7b54\u6848metadata", None))
self.pushButton_exec.setText(QCoreApplication.translate("Form", u"\u63d0\u53d6\u7b54\u6848", None))
# retranslateUi

View File

@ -88,7 +88,7 @@ MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "统考数据导入", command = lambda: SetButton("统考数据导入",[]))
MaintainenceMenu.add_command(label = "手动统计结果导入", command = lambda: SetButton("手动统计结果导入",["临时文件/手动统计结果.txt"]))
MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "文件或剪贴板提取答案", command = lambda: SetButton("文件或剪贴板提取答案",["文件或剪贴板提取答案.py"]))
MaintainenceMenu.add_command(label = "文件或剪贴板提取答案", command = lambda: SetButton("文件或文本框提取答案",[]))
MaintainenceMenu.add_command(label = "单元挂钩", command = lambda: SetButton("单元挂钩",["单元挂钩.py"]))
MaintainenceMenu.add_separator()
MaintainenceMenu.add_command(label = "移除关联题号", command = lambda: SetButton("移除关联题号",["文本文件/metadata.txt"]))

View File

@ -0,0 +1,56 @@
from PySide6.QtWidgets import QWidget, QApplication, QFileDialog
from Ui_文件或文本框提取答案 import Ui_Form
import os
from database_tools import *
class MyWindow(QWidget,Ui_Form):
def __init__(self):
super().__init__()
self.setupUi(self)
self.bind()
def bind(self):
self.radioButton_text.setChecked(True)
self.textlayout()
self.radioButton_text.clicked.connect(self.textlayout)
self.radioButton_file.clicked.connect(self.filelayout)
self.pushButton_selectfilepath.clicked.connect(self.selectfilepath)
self.pushButton_exec.clicked.connect(self.exec)
def textlayout(self):
self.pushButton_selectfilepath.setDisabled(True)
self.lineEdit_filepath.setDisabled(True)
self.plainTextEdit_rawString.setEnabled(True)
def filelayout(self):
self.pushButton_selectfilepath.setEnabled(True)
self.lineEdit_filepath.setEnabled(True)
self.plainTextEdit_rawString.setDisabled(True)
def selectfilepath(self):
self.filepath = QFileDialog.getOpenFileName(self,"选择.tex文件",os.getcwd(),"tex文件(*.tex);;所有文件(*)")[0]
self.lineEdit_filepath.setText(self.filepath)
def exec(self):
if self.radioButton_text.isChecked():
data = self.plainTextEdit_rawString.toPlainText()
else:
data = ReadTextFile(self.filepath)
print(self.lineEdit_2.text())
anslist = generateAnswerList(data,self.lineEdit_2.text())
output = "ans\n\n"
for id,ans in anslist:
if not ans == "暂无答案":
output += f"{id}\n{ans}\n\n"
self.plainTextEdit_ans.setPlainText(output)
if __name__ == '__main__':
app = QApplication([])
windows = MyWindow()
windows.show()
app.exec()

View File

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>690</width>
<height>421</height>
</rect>
</property>
<property name="windowTitle">
<string>文件或文本框提取答案</string>
</property>
<widget class="QPlainTextEdit" name="plainTextEdit_rawString">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>311</width>
<height>331</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_filepath">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>331</width>
<height>20</height>
</rect>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="label">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>54</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>文件路径</string>
</property>
</widget>
<widget class="QLabel" name="label_2">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>101</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>含答案的源代码</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit_2">
<property name="geometry">
<rect>
<x>462</x>
<y>30</y>
<width>211</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>答案: \textcolor{blue}{</string>
</property>
</widget>
<widget class="QLabel" name="label_3">
<property name="geometry">
<rect>
<x>460</x>
<y>10</y>
<width>54</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>答案前缀</string>
</property>
</widget>
<widget class="QRadioButton" name="radioButton_text">
<property name="geometry">
<rect>
<x>580</x>
<y>70</y>
<width>95</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>文本框生成</string>
</property>
</widget>
<widget class="QRadioButton" name="radioButton_file">
<property name="geometry">
<rect>
<x>580</x>
<y>100</y>
<width>95</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>文件生成</string>
</property>
</widget>
<widget class="QPushButton" name="pushButton_selectfilepath">
<property name="geometry">
<rect>
<x>350</x>
<y>30</y>
<width>101</width>
<height>24</height>
</rect>
</property>
<property name="text">
<string>选择文件路径</string>
</property>
</widget>
<widget class="QLabel" name="label_4">
<property name="geometry">
<rect>
<x>330</x>
<y>60</y>
<width>91</width>
<height>16</height>
</rect>
</property>
<property name="text">
<string>答案metadata</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit_ans">
<property name="geometry">
<rect>
<x>330</x>
<y>80</y>
<width>241</width>
<height>331</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="pushButton_exec">
<property name="geometry">
<rect>
<x>580</x>
<y>130</y>
<width>101</width>
<height>281</height>
</rect>
</property>
<property name="font">
<font>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>提取答案</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>