From 2f2a5eab46060fe6e547a96f7158747f4fc52193 Mon Sep 17 00:00:00 2001 From: "weiye.wang" Date: Wed, 1 May 2024 10:43:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=A0=E9=99=A4=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 工具v4/Ui_tool_panel.py | 10 ++- 工具v4/Ui_删除使用记录.py | 115 +++++++++++++++++++++++++++++ 工具v4/tool_panel.py | 8 ++- 工具v4/tool_panel.ui | 11 ++- 工具v4/删除使用记录.py | 78 ++++++++++++++++++++ 工具v4/删除使用记录.ui | 147 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 362 insertions(+), 7 deletions(-) create mode 100644 工具v4/Ui_删除使用记录.py create mode 100644 工具v4/删除使用记录.py create mode 100644 工具v4/删除使用记录.ui diff --git a/工具v4/Ui_tool_panel.py b/工具v4/Ui_tool_panel.py index 18f74dbf..9c02eea6 100644 --- a/工具v4/Ui_tool_panel.py +++ b/工具v4/Ui_tool_panel.py @@ -51,7 +51,7 @@ class Ui_MainWindow(object): self.tab_weihu.setObjectName(u"tab_weihu") self.tabWidget_weihu = QTabWidget(self.tab_weihu) self.tabWidget_weihu.setObjectName(u"tabWidget_weihu") - self.tabWidget_weihu.setGeometry(QRect(0, 0, 800, 490)) + self.tabWidget_weihu.setGeometry(QRect(0, 0, 760, 490)) sizePolicy = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -65,6 +65,9 @@ class Ui_MainWindow(object): self.tab_bjtm = QWidget() self.tab_bjtm.setObjectName(u"tab_bjtm") self.tabWidget_weihu.addTab(self.tab_bjtm, "") + self.tab_scjl = QWidget() + self.tab_scjl.setObjectName(u"tab_scjl") + self.tabWidget_weihu.addTab(self.tab_scjl, "") self.tab_xxdr = QWidget() self.tab_xxdr.setObjectName(u"tab_xxdr") self.tabWidget_weihu.addTab(self.tab_xxdr, "") @@ -185,9 +188,9 @@ class Ui_MainWindow(object): self.retranslateUi(MainWindow) - self.tabWidget_main.setCurrentIndex(5) + self.tabWidget_main.setCurrentIndex(1) self.tabWidget_luru.setCurrentIndex(0) - self.tabWidget_weihu.setCurrentIndex(8) + self.tabWidget_weihu.setCurrentIndex(3) self.tabWidget_shiyong.setCurrentIndex(2) self.tabWidget_beikezu.setCurrentIndex(1) self.tabWidget.setCurrentIndex(1) @@ -205,6 +208,7 @@ class Ui_MainWindow(object): self.tabWidget_main.setTabText(self.tabWidget_main.indexOf(self.tab_luru), QCoreApplication.translate("MainWindow", u"\u5f55\u5165", None)) self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_tjzd), QCoreApplication.translate("MainWindow", u"\u6dfb\u52a0\u5b57\u6bb5\u6570\u636e", None)) self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_bjtm), QCoreApplication.translate("MainWindow", u"\u7f16\u8f91\u9898\u76ee", None)) + self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_scjl), QCoreApplication.translate("MainWindow", u"\u5220\u9664\u4f7f\u7528\u8bb0\u5f55", None)) self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_xxdr), QCoreApplication.translate("MainWindow", u"\u5c0f\u95f2\u5bfc\u5165", None)) self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_sddr), QCoreApplication.translate("MainWindow", u"\u624b\u52a8\u5bfc\u5165", None)) self.tabWidget_weihu.setTabText(self.tabWidget_weihu.indexOf(self.tab_tkdr), QCoreApplication.translate("MainWindow", u"\u7edf\u8003\u5bfc\u5165", None)) diff --git a/工具v4/Ui_删除使用记录.py b/工具v4/Ui_删除使用记录.py new file mode 100644 index 00000000..3fe59fa6 --- /dev/null +++ b/工具v4/Ui_删除使用记录.py @@ -0,0 +1,115 @@ +# -*- 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, + QPlainTextEdit, QPushButton, QSizePolicy, QVBoxLayout, + QWidget) + +class Ui_Form(object): + def setupUi(self, Form): + if not Form.objectName(): + Form.setObjectName(u"Form") + Form.resize(760, 490) + self.horizontalLayoutWidget = QWidget(Form) + self.horizontalLayoutWidget.setObjectName(u"horizontalLayoutWidget") + self.horizontalLayoutWidget.setGeometry(QRect(100, 20, 461, 51)) + self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget) + self.horizontalLayout.setObjectName(u"horizontalLayout") + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout = QVBoxLayout() + self.verticalLayout.setObjectName(u"verticalLayout") + self.label_3 = QLabel(self.horizontalLayoutWidget) + self.label_3.setObjectName(u"label_3") + + self.verticalLayout.addWidget(self.label_3) + + self.lineEdit_id = QLineEdit(self.horizontalLayoutWidget) + self.lineEdit_id.setObjectName(u"lineEdit_id") + + self.verticalLayout.addWidget(self.lineEdit_id) + + + self.horizontalLayout.addLayout(self.verticalLayout) + + self.verticalLayout_2 = QVBoxLayout() + self.verticalLayout_2.setObjectName(u"verticalLayout_2") + self.label = QLabel(self.horizontalLayoutWidget) + self.label.setObjectName(u"label") + + self.verticalLayout_2.addWidget(self.label) + + self.lineEdit_dateregex = QLineEdit(self.horizontalLayoutWidget) + self.lineEdit_dateregex.setObjectName(u"lineEdit_dateregex") + + self.verticalLayout_2.addWidget(self.lineEdit_dateregex) + + + self.horizontalLayout.addLayout(self.verticalLayout_2) + + self.verticalLayout_3 = QVBoxLayout() + self.verticalLayout_3.setObjectName(u"verticalLayout_3") + self.label_2 = QLabel(self.horizontalLayoutWidget) + self.label_2.setObjectName(u"label_2") + + self.verticalLayout_3.addWidget(self.label_2) + + self.lineEdit_classregex = QLineEdit(self.horizontalLayoutWidget) + self.lineEdit_classregex.setObjectName(u"lineEdit_classregex") + + self.verticalLayout_3.addWidget(self.lineEdit_classregex) + + + self.horizontalLayout.addLayout(self.verticalLayout_3) + + self.plainTextEdit_result = QPlainTextEdit(Form) + self.plainTextEdit_result.setObjectName(u"plainTextEdit_result") + self.plainTextEdit_result.setGeometry(QRect(100, 100, 461, 361)) + self.plainTextEdit_result.setReadOnly(True) + self.label_4 = QLabel(Form) + self.label_4.setObjectName(u"label_4") + self.label_4.setGeometry(QRect(100, 80, 71, 16)) + self.pushButton_find = QPushButton(Form) + self.pushButton_find.setObjectName(u"pushButton_find") + self.pushButton_find.setGeometry(QRect(580, 20, 75, 111)) + self.pushButton_del = QPushButton(Form) + self.pushButton_del.setObjectName(u"pushButton_del") + self.pushButton_del.setGeometry(QRect(580, 140, 75, 131)) + self.pushButton_commit = QPushButton(Form) + self.pushButton_commit.setObjectName(u"pushButton_commit") + self.pushButton_commit.setGeometry(QRect(580, 280, 75, 181)) + font = QFont() + font.setBold(True) + self.pushButton_commit.setFont(font) + self.pushButton_commit.setStyleSheet(u"background-color: rgb(255, 255, 127);") + + self.retranslateUi(Form) + + QMetaObject.connectSlotsByName(Form) + # setupUi + + def retranslateUi(self, Form): + Form.setWindowTitle(QCoreApplication.translate("Form", u"\u5220\u9664\u4f7f\u7528\u8bb0\u5f55", None)) + self.label_3.setText(QCoreApplication.translate("Form", u"\u9898\u53f7", None)) + self.label.setText(QCoreApplication.translate("Form", u"\u65e5\u671fregex", None)) + self.label_2.setText(QCoreApplication.translate("Form", u"\u73ed\u7ea7regex", None)) + self.label_4.setText(QCoreApplication.translate("Form", u"\u68c0\u7d22\u7ed3\u679c", None)) + self.pushButton_find.setText(QCoreApplication.translate("Form", u"\u68c0\u7d22\u4fe1\u606f", None)) + self.pushButton_del.setText(QCoreApplication.translate("Form", u"\u9884\u5220\u9664\u8bb0\u5f55", None)) + self.pushButton_commit.setText(QCoreApplication.translate("Form", u"\u786e\u8ba4\u5220\u9664\n" +"(\u4e0d\u53ef\u9006)", None)) + # retranslateUi + diff --git a/工具v4/tool_panel.py b/工具v4/tool_panel.py index 5cc5768e..1eba3b4e 100644 --- a/工具v4/tool_panel.py +++ b/工具v4/tool_panel.py @@ -26,6 +26,7 @@ from 题目内容直接编辑 import MyWindow_bjtm from 修改metadata import MyWindow_tjzd from 基础知识编辑 import MyWindow_bjjc from 修改目标内容 import MyWindow_xgmb +from 删除使用记录 import MyWindow_scjl from database_tools_2 import * class MyWindow(QMainWindow,Ui_MainWindow): @@ -142,6 +143,10 @@ class MyWindow(QMainWindow,Ui_MainWindow): self.xgmb = MyWindow_xgmb(self.database) self.layout_xgmb.addWidget(self.xgmb) #以上三行为初始化"修改目标文本"tab + self.layout_scjl = QVBoxLayout(self.tab_scjl) + self.scjl = MyWindow_scjl(self.database) + self.layout_scjl.addWidget(self.scjl) #以上三行为初始化"修改目标文本"tab + for func in [ @@ -160,7 +165,8 @@ class MyWindow(QMainWindow,Ui_MainWindow): self.tjzd.setdbname, self.bjjc.setdbname, self.wbzh.setdbname, - self.xgmb.setdbname + self.xgmb.setdbname, + self.scjl.setdbname ]: #在列表中的tab里传送数据库名的连接 self.sendDBname.connect(func) def sendValue(self): diff --git a/工具v4/tool_panel.ui b/工具v4/tool_panel.ui index 6542b36c..2faa2c1c 100644 --- a/工具v4/tool_panel.ui +++ b/工具v4/tool_panel.ui @@ -27,7 +27,7 @@ QTabWidget::Triangular - 5 + 1 @@ -77,7 +77,7 @@ 0 0 - 800 + 760 490 @@ -94,7 +94,7 @@ QTabWidget::Triangular - 8 + 3 @@ -106,6 +106,11 @@ 编辑题目 + + + 删除使用记录 + + 小闲导入 diff --git a/工具v4/删除使用记录.py b/工具v4/删除使用记录.py new file mode 100644 index 00000000..1bdc5b00 --- /dev/null +++ b/工具v4/删除使用记录.py @@ -0,0 +1,78 @@ +from PySide6.QtWidgets import QWidget, QApplication, QFileDialog +from Ui_删除使用记录 import Ui_Form +from database_tools_2 import * + +class MyWindow_scjl(QWidget,Ui_Form): + def __init__(self,database_name): + super().__init__() + self.database_name = database_name + self.current_database_name = database_name + self.setupUi(self) + self.bind() + def setdbname(self,string): + self.database_name = string + self.pushButton_del.setDisabled(True) + self.pushButton_commit.setDisabled(True) + try: + self.db.close() + except: + pass + self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name) + # print(self.database_name) + def bind(self): + self.pushButton_del.setDisabled(True) + self.pushButton_commit.setDisabled(True) + self.pushButton_find.clicked.connect(self.find) + self.pushButton_del.clicked.connect(self.delete) + self.pushButton_commit.clicked.connect(self.commit) + self.db = connect(hostname=db_host, port=db_port, username= db_user, pwd= db_pwd, db=self.database_name) + def find(self): + self.mycursor = self.db.cursor() + self.id = self.lineEdit_id.text().strip().zfill(6) + self.dateregex = self.lineEdit_dateregex.text().strip() + self.classregex = self.lineEdit_classregex.text().strip() + self.mycursor.execute("SELECT * FROM usages WHERE ID = %s;",(self.id,)) + ret_list = self.mycursor.fetchall() + self.usage_list = [] + for ret in ret_list: + if re.findall(self.dateregex,ret[1]) != [] and re.findall(self.classregex,ret[2]) != []: + self.usage_list.append(ret) + output = f"已找到 {len(self.usage_list)} 个使用记录:\n\n具体如下:\n" + for u in self.usage_list: + output += (f"题号: {u[0]}, 日期: {u[1]}, 班级: {u[2]}, 难度: {u[3]}\n") + self.plainTextEdit_result.setPlainText(output) + if len(self.usage_list) >= 1: + self.pushButton_del.setEnabled(True) + else: + self.pushButton_del.setEnabled(False) + def delete(self): + self.mycursor = self.db.cursor() + self.mycursor.execute("SELECT count(*) FROM usages;") + print(f"预删除前有 {self.mycursor.fetchall()[0][0]} 条使用记录.") + sql1 = "DELETE FROM usages WHERE ID = %s AND date = %s AND classname = %s AND diff = %s;" + sql2 = "INSERT INTO logs (DATE,TIME,username,action,id,db_content) VALUE (%s,%s,%s,%s,%s,%s);" + for u in tqdm.tqdm(self.usage_list,desc = "删除使用记录"): + self.mycursor.execute(sql1,u) + val = (GetDate(),GetTime(),get_git_username(),"删除使用记录",self.id,f"{u}") + self.mycursor.execute(sql2,val) + self.mycursor.execute("SELECT count(*) FROM usages;") + print(f"删除后将有 {self.mycursor.fetchall()[0][0]} 条使用记录.") + self.pushButton_commit.setEnabled(True) + def commit(self): + self.db.commit() + self.pushButton_del.setDisabled(True) + self.pushButton_commit.setDisabled(True) + + + + + + + + +if __name__ == '__main__': + app = QApplication([]) + windows = MyWindow_scjl("tikutest") + windows.show() + app.exec() + diff --git a/工具v4/删除使用记录.ui b/工具v4/删除使用记录.ui new file mode 100644 index 00000000..d22fe18c --- /dev/null +++ b/工具v4/删除使用记录.ui @@ -0,0 +1,147 @@ + + + Form + + + + 0 + 0 + 760 + 490 + + + + 删除使用记录 + + + + + 100 + 20 + 461 + 51 + + + + + + + + + 题号 + + + + + + + + + + + + + + 日期regex + + + + + + + + + + + + + + 班级regex + + + + + + + + + + + + + + 100 + 100 + 461 + 361 + + + + true + + + + + + 100 + 80 + 71 + 16 + + + + 检索结果 + + + + + + 580 + 20 + 75 + 111 + + + + 检索信息 + + + + + + 580 + 140 + 75 + 131 + + + + 预删除记录 + + + + + + 580 + 280 + 75 + 181 + + + + + true + + + + background-color: rgb(255, 255, 127); + + + 确认删除 +(不可逆) + + + + + +