Bladeren bron

第一版功能

ChenYL 2 jaren geleden
bovenliggende
commit
0b3c323fd0
4 gewijzigde bestanden met toevoegingen van 314 en 0 verwijderingen
  1. 75 0
      src/DataFilter.py
  2. 150 0
      src/DataFilter.ui
  3. 0 0
      src/__init__.py
  4. 89 0
      src/main.py

+ 75 - 0
src/DataFilter.py

@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+
+################################################################################
+## Form generated from reading UI file 'DataFilter.ui'
+##
+## Created by: Qt User Interface Compiler version 6.5.1
+##
+## 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, QPushButton,
+    QSizePolicy, QTextBrowser, QTextEdit, QWidget)
+
+class Ui_Form(object):
+    def setupUi(self, Form):
+        if not Form.objectName():
+            Form.setObjectName(u"Form")
+        Form.resize(781, 524)
+        self.inputBox = QLineEdit(Form)
+        self.inputBox.setObjectName(u"inputBox")
+        self.inputBox.setGeometry(QRect(160, 110, 411, 20))
+        self.submitBtn = QPushButton(Form)
+        self.submitBtn.setObjectName(u"submitBtn")
+        self.submitBtn.setGeometry(QRect(590, 110, 75, 24))
+        self.filterCategoryBtn = QPushButton(Form)
+        self.filterCategoryBtn.setObjectName(u"filterCategoryBtn")
+        self.filterCategoryBtn.setGeometry(QRect(160, 150, 75, 24))
+        self.filterDigitBtn = QPushButton(Form)
+        self.filterDigitBtn.setObjectName(u"filterDigitBtn")
+        self.filterDigitBtn.setGeometry(QRect(250, 150, 75, 24))
+        self.filterEnglishBtn = QPushButton(Form)
+        self.filterEnglishBtn.setObjectName(u"filterEnglishBtn")
+        self.filterEnglishBtn.setGeometry(QRect(350, 150, 75, 24))
+        self.resultBox = QTextBrowser(Form)
+        self.resultBox.setObjectName(u"resultBox")
+        self.resultBox.setGeometry(QRect(460, 250, 256, 192))
+        self.originBox = QTextEdit(Form)
+        self.originBox.setObjectName(u"originBox")
+        self.originBox.setGeometry(QRect(40, 250, 151, 181))
+        self.filterCategoryBox = QTextEdit(Form)
+        self.filterCategoryBox.setObjectName(u"filterCategoryBox")
+        self.filterCategoryBox.setGeometry(QRect(230, 250, 151, 181))
+        self.label = QLabel(Form)
+        self.label.setObjectName(u"label")
+        self.label.setGeometry(QRect(50, 220, 54, 16))
+        self.label_2 = QLabel(Form)
+        self.label_2.setObjectName(u"label_2")
+        self.label_2.setGeometry(QRect(230, 220, 54, 16))
+        self.label_3 = QLabel(Form)
+        self.label_3.setObjectName(u"label_3")
+        self.label_3.setGeometry(QRect(480, 220, 54, 16))
+
+        self.retranslateUi(Form)
+
+        QMetaObject.connectSlotsByName(Form)
+    # setupUi
+
+    def retranslateUi(self, Form):
+        Form.setWindowTitle(QCoreApplication.translate("Form", u"\u6570\u636e\u7b5b\u9009", None))
+        self.submitBtn.setText(QCoreApplication.translate("Form", u"\u63d0\u53d6", None))
+        self.filterCategoryBtn.setText(QCoreApplication.translate("Form", u"\u63d2\u5165\u7c7b\u522b", None))
+        self.filterDigitBtn.setText(QCoreApplication.translate("Form", u"\u63d2\u5165\u6570\u5b57", None))
+        self.filterEnglishBtn.setText(QCoreApplication.translate("Form", u"\u63d2\u5165\u82f1\u6587", None))
+        self.label.setText(QCoreApplication.translate("Form", u"\u539f\u59cb\u6570\u636e", None))
+        self.label_2.setText(QCoreApplication.translate("Form", u"\u81ea\u5b9a\u4e49\u7c7b\u522b\u8bcd", None))
+        self.label_3.setText(QCoreApplication.translate("Form", u"\u63d0\u53d6\u7ed3\u679c", None))
+    # retranslateUi
+

+ 150 - 0
src/DataFilter.ui

@@ -0,0 +1,150 @@
+<?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>781</width>
+    <height>524</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>数据筛选</string>
+  </property>
+  <widget class="QLineEdit" name="inputBox">
+   <property name="geometry">
+    <rect>
+     <x>160</x>
+     <y>110</y>
+     <width>411</width>
+     <height>20</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="submitBtn">
+   <property name="geometry">
+    <rect>
+     <x>590</x>
+     <y>110</y>
+     <width>75</width>
+     <height>24</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>提取</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="filterCategoryBtn">
+   <property name="geometry">
+    <rect>
+     <x>160</x>
+     <y>150</y>
+     <width>75</width>
+     <height>24</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>插入类别</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="filterDigitBtn">
+   <property name="geometry">
+    <rect>
+     <x>250</x>
+     <y>150</y>
+     <width>75</width>
+     <height>24</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>插入数字</string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="filterEnglishBtn">
+   <property name="geometry">
+    <rect>
+     <x>350</x>
+     <y>150</y>
+     <width>75</width>
+     <height>24</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>插入英文</string>
+   </property>
+  </widget>
+  <widget class="QTextBrowser" name="resultBox">
+   <property name="geometry">
+    <rect>
+     <x>460</x>
+     <y>250</y>
+     <width>256</width>
+     <height>192</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QTextEdit" name="originBox">
+   <property name="geometry">
+    <rect>
+     <x>40</x>
+     <y>250</y>
+     <width>151</width>
+     <height>181</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QTextEdit" name="filterCategoryBox">
+   <property name="geometry">
+    <rect>
+     <x>230</x>
+     <y>250</y>
+     <width>151</width>
+     <height>181</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label">
+   <property name="geometry">
+    <rect>
+     <x>50</x>
+     <y>220</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>230</x>
+     <y>220</y>
+     <width>54</width>
+     <height>16</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>自定义类别词</string>
+   </property>
+  </widget>
+  <widget class="QLabel" name="label_3">
+   <property name="geometry">
+    <rect>
+     <x>480</x>
+     <y>220</y>
+     <width>54</width>
+     <height>16</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>提取结果</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 0 - 0
src/__init__.py


+ 89 - 0
src/main.py

@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+import re
+import sys
+
+from PySide6.QtWidgets import QMainWindow, QApplication, QMessageBox
+
+from src.DataFilter import Ui_Form
+
+category_pattern = re.compile(r'\[类别\]')
+digit_pattern = re.compile(r'\[数字\]')
+english_pattern = re.compile(r'\[字母\]')
+
+class MyMainForm(QMainWindow, Ui_Form):
+  def __init__(self, parent=None):
+    super(MyMainForm, self).__init__(parent)
+    self.setupUi(self)
+    self.submitBtn.clicked.connect(self.submit)
+    self.filterCategoryBtn.clicked.connect(self.insertCategoryRegex)
+    self.filterDigitBtn.clicked.connect(self.insertDigitRegex)
+    self.filterEnglishBtn.clicked.connect(self.insertEnglishRegex)
+
+  def submit(self):
+    inputText = self.inputBox.text()
+    if len(inputText) == 0:
+      QMessageBox.warning(self, "输入提示", "请输入待筛选关键词")
+
+    cnt = 0
+    if category_pattern.search(inputText) is not None:
+      cnt = cnt + 1
+    if digit_pattern.search(inputText) is not None:
+      cnt = cnt + 1
+    if english_pattern.search(inputText) is not None:
+      cnt = cnt + 1
+    if cnt > 1:
+      QMessageBox.warning(self, "提示", "一次只能使用一种正则筛选项")
+
+    originText = self.originBox.toPlainText()
+    if len(originText) == 0:
+      QMessageBox.warning(self, "提示", "请输入待筛选关键词")
+
+    categoryText = self.filterCategoryBox.toPlainText()
+    if category_pattern.search(inputText) is not None and len(categoryText) == 0:
+      QMessageBox.warning(self, "提示", "使用类别筛选,请输入待筛选的类别关键词")
+
+    resultKeyArray = []
+    originKeyArray = originText.splitlines()
+    if category_pattern.search(inputText) is not None:
+      categoryKeyArray = categoryText.splitlines()
+      for categoryKey in categoryKeyArray:
+        resultKeyArray.extend(self.filter(originKeyArray, inputText, "类别", categoryKey))
+    elif digit_pattern.search(inputText) is not None:
+      resultKeyArray.extend(self.filter(originKeyArray, inputText, "数字", "0-9"))
+    elif english_pattern.search(inputText) is not None:
+      resultKeyArray.extend(self.filter(originKeyArray, inputText, "字母", "A-Za-z"))
+    else:
+      resultKeyArray.extend(self.filter(originKeyArray, inputText))
+
+    self.resultBox.setText("\n".join(resultKeyArray))
+
+  def filter(self, originArray, inputText, oldStr=None, newStr=None):
+    resultArray = []
+    pattern_str = inputText
+    if len(oldStr) > 0 and len(newStr) > 0:
+      pattern_str = inputText.replace(oldStr, newStr)
+    pattern = re.compile(pattern_str)
+    for originKey in originArray:
+      if pattern.search(originKey) is not None:
+        resultArray.append(originKey)
+    return resultArray
+
+  def insertCategoryRegex(self):
+    self.setLineEditText("[类别]")
+
+  def insertDigitRegex(self):
+    self.setLineEditText("[数字]")
+
+  def insertEnglishRegex(self):
+    self.setLineEditText("[字母]")
+
+  def setLineEditText(self, regexText):
+    text = self.inputBox.text()
+    self.inputBox.setText(text + regexText)
+
+
+if __name__ == "__main__":
+  app = QApplication(sys.argv)
+  myWin = MyMainForm()
+  myWin.show()
+  sys.exit(app.exec())