|
@@ -10,6 +10,8 @@ import time
|
|
|
from PyQt5.QtCore import QCoreApplication
|
|
|
from PyQt5.QtGui import QIcon
|
|
|
from PyQt5.QtWidgets import QFileDialog, QMessageBox
|
|
|
+from pip._vendor import chardet
|
|
|
+
|
|
|
import Config
|
|
|
from Config import Configuration
|
|
|
from Dialog.Dialogadd import Dialogadd
|
|
@@ -35,7 +37,9 @@ from PyQt5.QtWidgets import *
|
|
|
|
|
|
class ScanInput(QWidget):
|
|
|
|
|
|
- def __init__(self, versionCode='sss',productDate="aaaa",directory="C:/Users/lili/Desktop/material",parent=None, closeToDlg=None):
|
|
|
+ my_signal = pyqtSignal(str)
|
|
|
+
|
|
|
+ def __init__(self, versionCode='538614100080FA2A',productDate="2023年5月31日",fileName="538614100080F293_2023年5月31日.txt",directory="C:/Users/lili/Desktop/material",parent=None, closeToDlg=None):
|
|
|
super(ScanInput, self).__init__(parent)
|
|
|
self.ui = Ui_Form()
|
|
|
self.ui.setupUi(self)
|
|
@@ -43,13 +47,15 @@ class ScanInput(QWidget):
|
|
|
self.setWindowIcon(QIcon(softwareIconPath))
|
|
|
|
|
|
self.directory = directory
|
|
|
+ self.fileName = fileName
|
|
|
|
|
|
self.ui.versionCode.setText(versionCode)
|
|
|
self.ui.Deliverydate.setText(productDate)
|
|
|
|
|
|
self.QComboBoxnit()
|
|
|
|
|
|
- # self.ui.save.clicked.connect(self.actSaveTriggered)
|
|
|
+ self.ui.save.clicked.connect(self.saveFile)
|
|
|
+
|
|
|
self.ui.open.clicked.connect(self.actOpenTriggered)
|
|
|
|
|
|
self.ui.materialType.currentTextChanged.connect(self.materialTypeChanged)
|
|
@@ -60,11 +66,14 @@ class ScanInput(QWidget):
|
|
|
# self.mkdirFile()
|
|
|
|
|
|
# 线程传参
|
|
|
- self.autoSave = AutoSaveThread(self,directory)
|
|
|
+ self.autoSave = AutoSaveThread(self,directory,self.fileName)
|
|
|
self.autoSave.start()
|
|
|
+ self.my_signal.connect(self.autoSave.my_slot)
|
|
|
|
|
|
|
|
|
|
|
|
+ def send_value(self, value):
|
|
|
+ self.my_signal.emit(value)
|
|
|
|
|
|
# 下拉框属性
|
|
|
def getParamDict(self):
|
|
@@ -80,38 +89,56 @@ class ScanInput(QWidget):
|
|
|
|
|
|
# 打开文件
|
|
|
def actOpenTriggered(self):
|
|
|
- curPath = QCoreApplication.applicationDirPath()
|
|
|
|
|
|
- QMessageBox.information(self, '提示', '请选择以版本代码+发料日期为名的.txt文件')
|
|
|
|
|
|
+ # 538614100080B2AE_2023年5月22日
|
|
|
+ # 当前应用所在的目录
|
|
|
+ # curPath = QCoreApplication.applicationDirPath()
|
|
|
+ versionCode = self.ui.versionCode.text()
|
|
|
+ deliveryDate = self.ui.Deliverydate.text()
|
|
|
+ selectPath = self.directory
|
|
|
+
|
|
|
+ QMessageBox.information(self, '提示', f'请选择以版本代码\'{versionCode}\'+发料日期\'{deliveryDate}\'为开头的.txt文件')
|
|
|
|
|
|
# 调用打开文件对话框打开一个文件
|
|
|
- QFileName = QFileDialog.getOpenFileName(self, "选取文件", curPath,
|
|
|
+ QFileName = QFileDialog.getOpenFileName(self, "选取文件", selectPath,
|
|
|
"文本文件(*.txt)")
|
|
|
|
|
|
|
|
|
-
|
|
|
if QFileName[0]:
|
|
|
|
|
|
- fileName = QFileName[0].split("/")[-1].split(".")[0].split("_")
|
|
|
+ fileName = QFileName[0].split("/")[-1]
|
|
|
+
|
|
|
+ fileNameAll = QFileName[0].split("/")[-1].split(".")[0]
|
|
|
|
|
|
+ self.fileName = fileName
|
|
|
+ # 将文件名传递给
|
|
|
+ self.send_value(fileName)
|
|
|
|
|
|
- if len(fileName)==2:
|
|
|
- versionCode = fileName[0]
|
|
|
- deliveryDate = fileName[1]
|
|
|
|
|
|
- self.ui.Deliverydate.setText(deliveryDate)
|
|
|
- self.ui.versionCode.setText(versionCode)
|
|
|
+ fileNameBegin = versionCode + "_"+deliveryDate
|
|
|
|
|
|
- f = open(QFileName[0], 'r',encoding='utf-8')
|
|
|
- with f:
|
|
|
+ if fileNameAll.startswith(fileNameBegin):
|
|
|
+
|
|
|
+ with open(QFileName[0], "rb") as f:
|
|
|
data = f.read()
|
|
|
- self.ui.plainTextEdit.setPlainText(data)
|
|
|
+ result = chardet.detect(data)
|
|
|
+ encoding = result["encoding"]
|
|
|
+ if encoding is not None:
|
|
|
+ data = data.decode(encoding)
|
|
|
+ self.ui.plainTextEdit.setPlainText(data)
|
|
|
+
|
|
|
+ # f = open(QFileName[0], 'r',encoding='utf-8')
|
|
|
+ # with f:
|
|
|
+ # data = f.read()
|
|
|
+ # result = chardet.detect(data)
|
|
|
+ # self.ui.plainTextEdit.setPlainText(data)
|
|
|
+
|
|
|
else:
|
|
|
- QMessageBox.critical(self,'错误','请选择以版本代码+发料日期为名的.txt文件')
|
|
|
+ QMessageBox.critical(self,'错误',f'请选择以版本代码\'{versionCode}\'+发料日期\'{deliveryDate}\'为开头的.txt文件')
|
|
|
|
|
|
# 文件另存为
|
|
|
- def actSaveTriggered(self):
|
|
|
+ def actSaveAsTriggered(self):
|
|
|
|
|
|
desktopPath = Configuration().get_desktop()
|
|
|
|
|
@@ -140,6 +167,26 @@ class ScanInput(QWidget):
|
|
|
QMessageBox.information(self, "提示", "数据文件保存成功!", QMessageBox.Ok)
|
|
|
return aFileName, saveFlag
|
|
|
|
|
|
+ # 文件保存
|
|
|
+ def saveFile(self):
|
|
|
+
|
|
|
+ fileName = self.fileName
|
|
|
+
|
|
|
+ directory = self.directory
|
|
|
+
|
|
|
+ filePath = directory + "/" + fileName
|
|
|
+ # filePath = "test.txt" # 指定文件路径
|
|
|
+
|
|
|
+ try:
|
|
|
+ with open(filePath, "w") as f:
|
|
|
+ text = self.ui.plainTextEdit.toPlainText()
|
|
|
+ f.write(text)
|
|
|
+ # 将文件标记为已保存
|
|
|
+ self.ui.plainTextEdit.document().setModified(False)
|
|
|
+ QMessageBox.information(self, "Information", "保存成功")
|
|
|
+ except Exception as e:
|
|
|
+ QMessageBox.warning(self, "Warning", f"Failed to save file: {str(e)}")
|
|
|
+
|
|
|
# 物料类别选择
|
|
|
def materialTypeChanged(self, materialType):
|
|
|
|
|
@@ -162,6 +209,8 @@ class ScanInput(QWidget):
|
|
|
# else:
|
|
|
# return True
|
|
|
|
|
|
+
|
|
|
+
|
|
|
# 添加物料类别的界面 目前没用
|
|
|
def openDialog(self):
|
|
|
dialog = Dialogadd(self)
|
|
@@ -174,7 +223,7 @@ class ScanInput(QWidget):
|
|
|
def closeThread(self):
|
|
|
self.autoSave.stop()
|
|
|
|
|
|
- def closeEvent(self, event):
|
|
|
+ def closeEventOld(self, event):
|
|
|
# # desktopPath = Configuration().get_desktop()
|
|
|
#
|
|
|
versionCode = self.ui.versionCode.text()
|
|
@@ -218,14 +267,43 @@ class ScanInput(QWidget):
|
|
|
# QMessageBox.information(self, "消息", "谢谢!")
|
|
|
|
|
|
|
|
|
+ def closeEvent(self, event):
|
|
|
+ # 判断文本编辑器是否已经保存
|
|
|
+ if self.ui.plainTextEdit.document().isModified():
|
|
|
+
|
|
|
+ # 文件名称
|
|
|
+ fileName = self.fileName
|
|
|
+ directory = self.directory
|
|
|
+ msg_box = QMessageBox(QMessageBox.Question, "提示", f"是否需要将文件{fileName}保存在{directory}文件夹中")
|
|
|
+ msg_box.setStandardButtons(QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel)
|
|
|
+
|
|
|
+ # 将 Save 按钮的文本设置为中文
|
|
|
+ save_button = msg_box.button(QMessageBox.Save)
|
|
|
+ save_button.setText("保存")
|
|
|
+ save_button = msg_box.button(QMessageBox.Discard)
|
|
|
+ save_button.setText("不保存")
|
|
|
+ save_button = msg_box.button(QMessageBox.Cancel)
|
|
|
+ save_button.setText("取消")
|
|
|
|
|
|
+ choice = msg_box.exec_()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if choice == QMessageBox.Save:
|
|
|
+ self.saveFile()
|
|
|
+ # 如果文件已经保存,则可以关闭窗口
|
|
|
+ event.accept()
|
|
|
+ elif choice == QMessageBox.Cancel:
|
|
|
+ event.ignore()
|
|
|
+ else:
|
|
|
+ event.accept()
|
|
|
|
|
|
|
|
|
# 自动保存 线程任务
|
|
|
class AutoSaveThread(QThread):
|
|
|
|
|
|
# 初始化传参
|
|
|
- def __init__(self, inputDiog,directory,parent=None):
|
|
|
+ def __init__(self, inputDiog,directory,fileName,parent=None):
|
|
|
super(AutoSaveThread, self).__init__(parent)
|
|
|
|
|
|
self.inputDiog = inputDiog
|
|
@@ -236,12 +314,16 @@ class AutoSaveThread(QThread):
|
|
|
|
|
|
self.directory = directory
|
|
|
|
|
|
+ self.fileName = fileName
|
|
|
+
|
|
|
|
|
|
|
|
|
def run(self):
|
|
|
self.loop_monitor()
|
|
|
|
|
|
-
|
|
|
+ @pyqtSlot(str)
|
|
|
+ def my_slot(self, value):
|
|
|
+ self.fileName = value
|
|
|
|
|
|
def time_printer(self):
|
|
|
|
|
@@ -250,15 +332,16 @@ class AutoSaveThread(QThread):
|
|
|
|
|
|
# desktopPath = Configuration().get_desktop()
|
|
|
|
|
|
- versionCode = self.versionCode
|
|
|
- deliveryDate = self.deliveryDate
|
|
|
-
|
|
|
+ # versionCode = self.versionCode
|
|
|
+ # deliveryDate = self.deliveryDate
|
|
|
+ #
|
|
|
filePath = self.directory
|
|
|
|
|
|
- filenameStr = versionCode+"_"+deliveryDate + ".txt"
|
|
|
+ filenameStr = self.fileName
|
|
|
|
|
|
+ #
|
|
|
+ # filenameStr = versionCode+"_"+deliveryDate + ".txt"
|
|
|
# filePathName = filePath + '\\' + folderName + '\\' + filenameStr
|
|
|
-
|
|
|
filePathName = filePath + '/' + filenameStr
|
|
|
|
|
|
txt = self.inputDiog.ui.plainTextEdit.toPlainText()
|