Эх сурвалжийг харах

feat:增加文件选择功能

ChenGanBin 2 жил өмнө
parent
commit
674ca86630
4 өөрчлөгдсөн 66 нэмэгдсэн , 7 устгасан
  1. 9 0
      README.md
  2. 9 0
      src/DataFilter.py
  3. 29 0
      src/DataFilter.ui
  4. 19 7
      src/main.py

+ 9 - 0
README.md

@@ -0,0 +1,9 @@
+# 开发记录
+
+待办列表
+* 调整界面结构,增大结果区域
+* 增加正则匹配不限制位置
+* 增加历史记录功能,能打开上一次的位置
+
+开发进度
+* 2023-07-05 增加文件选择功能

+ 9 - 0
src/DataFilter.py

@@ -56,6 +56,13 @@ class Ui_Form(object):
         self.label_3 = QLabel(Form)
         self.label_3.setObjectName(u"label_3")
         self.label_3.setGeometry(QRect(480, 220, 54, 16))
+        self.fileBtn = QPushButton(Form)
+        self.fileBtn.setObjectName(u"fileBtn")
+        self.fileBtn.setGeometry(QRect(590, 70, 75, 23))
+        self.filePathBox = QLineEdit(Form)
+        self.filePathBox.setObjectName(u"filePathBox")
+        self.filePathBox.setEnabled(False)
+        self.filePathBox.setGeometry(QRect(160, 70, 411, 20))
 
         self.retranslateUi(Form)
 
@@ -71,5 +78,7 @@ class Ui_Form(object):
         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))
+        self.fileBtn.setText(QCoreApplication.translate("Form", u"\u6587\u4ef6\u9009\u62e9", None))
+        self.filePathBox.setPlaceholderText(QCoreApplication.translate("Form", u"\u8bf7\u9009\u62e9\u6587\u4ef6", None))
     # retranslateUi
 

+ 29 - 0
src/DataFilter.ui

@@ -144,6 +144,35 @@
     <string>提取结果</string>
    </property>
   </widget>
+  <widget class="QPushButton" name="fileBtn">
+   <property name="geometry">
+    <rect>
+     <x>590</x>
+     <y>70</y>
+     <width>75</width>
+     <height>23</height>
+    </rect>
+   </property>
+   <property name="text">
+    <string>文件选择</string>
+   </property>
+  </widget>
+  <widget class="QLineEdit" name="filePathBox">
+   <property name="enabled">
+    <bool>false</bool>
+   </property>
+   <property name="geometry">
+    <rect>
+     <x>160</x>
+     <y>70</y>
+     <width>411</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="placeholderText">
+    <string>请选择文件</string>
+   </property>
+  </widget>
  </widget>
  <resources/>
  <connections/>

+ 19 - 7
src/main.py

@@ -2,7 +2,7 @@
 import re
 import sys
 
-from PySide6.QtWidgets import QMainWindow, QApplication, QMessageBox
+from PySide6.QtWidgets import QMainWindow, QApplication, QMessageBox, QFileDialog
 
 from src.DataFilter import Ui_Form
 
@@ -18,11 +18,13 @@ class MyMainForm(QMainWindow, Ui_Form):
     self.filterCategoryBtn.clicked.connect(self.insertCategoryRegex)
     self.filterDigitBtn.clicked.connect(self.insertDigitRegex)
     self.filterEnglishBtn.clicked.connect(self.insertEnglishRegex)
+    self.fileBtn.clicked.connect(self.selectFile)
 
   def submit(self):
     inputText = self.inputBox.text()
     if len(inputText) == 0:
       QMessageBox.warning(self, "输入提示", "请输入待筛选关键词")
+      return
 
     cnt = 0
     if category_pattern.search(inputText) is not None:
@@ -33,17 +35,24 @@ class MyMainForm(QMainWindow, Ui_Form):
       cnt = cnt + 1
     if cnt > 1:
       QMessageBox.warning(self, "提示", "一次只能使用一种正则筛选项")
-
-    originText = self.originBox.toPlainText()
-    if len(originText) == 0:
-      QMessageBox.warning(self, "提示", "请输入待筛选关键词")
+      return
 
     categoryText = self.filterCategoryBox.toPlainText()
     if category_pattern.search(inputText) is not None and len(categoryText) == 0:
       QMessageBox.warning(self, "提示", "使用类别筛选,请输入待筛选的类别关键词")
+      return
+
+
+    file_path = self.filePathBox.text()
+    if len(file_path) == 0:
+      QMessageBox.warning(self, "提示", "请选择带筛选文件")
+      return
+
+    originKeyArray = None
+    with open(file_path, 'r', encoding='utf-8') as f:
+      originKeyArray = f.readlines()
 
     resultKeyArray = []
-    originKeyArray = originText.splitlines()
     if category_pattern.search(inputText) is not None:
       categoryKeyArray = categoryText.splitlines()
       for categoryKey in categoryKeyArray:
@@ -60,7 +69,7 @@ class MyMainForm(QMainWindow, Ui_Form):
   def filter(self, originArray, inputText, oldStr=None, newStr=None):
     resultArray = []
     pattern_str = inputText
-    if len(oldStr) > 0 and len(newStr) > 0:
+    if oldStr is not None and newStr is not None and len(oldStr) > 0 and len(newStr) > 0:
       pattern_str = inputText.replace(oldStr, newStr)
     pattern = re.compile(pattern_str)
     for originKey in originArray:
@@ -81,6 +90,9 @@ class MyMainForm(QMainWindow, Ui_Form):
     text = self.inputBox.text()
     self.inputBox.setText(text + regexText)
 
+  def selectFile(self):
+    file_path = QFileDialog.getOpenFileName(self, "选择文件")
+    self.filePathBox.setText(file_path[0])
 
 if __name__ == "__main__":
   app = QApplication(sys.argv)