添加删除使用记录功能
This commit is contained in:
parent
cc84cbda56
commit
2f2a5eab46
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
<enum>QTabWidget::Triangular</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>5</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab_luru">
|
||||
<attribute name="title">
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>800</width>
|
||||
<width>760</width>
|
||||
<height>490</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
@ -94,7 +94,7 @@
|
|||
<enum>QTabWidget::Triangular</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>8</number>
|
||||
<number>3</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab_tjzd">
|
||||
<attribute name="title">
|
||||
|
|
@ -106,6 +106,11 @@
|
|||
<string>编辑题目</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_scjl">
|
||||
<attribute name="title">
|
||||
<string>删除使用记录</string>
|
||||
</attribute>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tab_xxdr">
|
||||
<attribute name="title">
|
||||
<string>小闲导入</string>
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
@ -0,0 +1,147 @@
|
|||
<?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>760</width>
|
||||
<height>490</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>删除使用记录</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="horizontalLayoutWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>20</y>
|
||||
<width>461</width>
|
||||
<height>51</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_3">
|
||||
<property name="text">
|
||||
<string>题号</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit_id"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>日期regex</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit_dateregex"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>班级regex</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="lineEdit_classregex"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QPlainTextEdit" name="plainTextEdit_result">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>100</y>
|
||||
<width>461</width>
|
||||
<height>361</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="label_4">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>100</x>
|
||||
<y>80</y>
|
||||
<width>71</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>检索结果</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButton_find">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>580</x>
|
||||
<y>20</y>
|
||||
<width>75</width>
|
||||
<height>111</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>检索信息</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButton_del">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>580</x>
|
||||
<y>140</y>
|
||||
<width>75</width>
|
||||
<height>131</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>预删除记录</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QPushButton" name="pushButton_commit">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>580</x>
|
||||
<y>280</y>
|
||||
<width>75</width>
|
||||
<height>181</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="styleSheet">
|
||||
<string notr="true">background-color: rgb(255, 255, 127);</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>确认删除
|
||||
(不可逆)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
Reference in New Issue