ScanInput.py 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  1. # -*- coding: utf-8 -*-
  2. '''
  3. @Project :Scan
  4. @File :ScanInput.py
  5. @Author :Leslie
  6. @Date :2023/5/6 9:03
  7. '''
  8. import os
  9. import time
  10. from PyQt5.QtCore import QCoreApplication
  11. from PyQt5.QtGui import QIcon
  12. from PyQt5.QtWidgets import QFileDialog, QMessageBox
  13. import Config
  14. from Config import Configuration
  15. from Dialogadd import Dialogadd
  16. from ui.Scan import Ui_Form
  17. softwareIconPath = r'./pic/scan.png'
  18. folderName = 'material'
  19. # softwareIconPath = r'./pic/scan.png'
  20. from PyQt5.QtCore import *
  21. from PyQt5.QtGui import *
  22. from PyQt5.QtWidgets import *
  23. # class WorkThread(QThread):
  24. # sinOut = pyqtSignal(str)
  25. # def run(self):
  26. # while True:
  27. # time.sleep(5)
  28. # self.sinOut.emit("1111run")
  29. class ScanInput(QWidget):
  30. def __init__(self, versionCode='sss',productDate="aaaa",directory="C:/Users/lili/Desktop/material",parent=None, closeToDlg=None):
  31. super(ScanInput, self).__init__(parent)
  32. self.ui = Ui_Form()
  33. self.ui.setupUi(self)
  34. self.setWindowTitle("物料扫码")
  35. self.setWindowIcon(QIcon(softwareIconPath))
  36. self.directory = directory
  37. self.ui.versionCode.setText(versionCode)
  38. self.ui.Deliverydate.setText(productDate)
  39. self.QComboBoxnit()
  40. # self.ui.save.clicked.connect(self.actSaveTriggered)
  41. self.ui.open.clicked.connect(self.actOpenTriggered)
  42. self.ui.materialType.currentTextChanged.connect(self.materialTypeChanged)
  43. QMessageBox.information(self, '提示', '请在英文输入法状态下进行扫码操作')
  44. # 创建保存.txt的文件夹
  45. # self.mkdirFile()
  46. # 线程传参
  47. self.autoSave = AutoSaveThread(self,directory)
  48. self.autoSave.start()
  49. # 下拉框属性
  50. def getParamDict(self):
  51. paramDict = Config.Configuration().getConfiguration()
  52. return paramDict
  53. # 下拉框初始化
  54. def QComboBoxnit(self):
  55. paramDict = self.getParamDict()
  56. for item in paramDict:
  57. item = str(item)
  58. self.ui.materialType.addItem(item)
  59. # 打开文件
  60. def actOpenTriggered(self):
  61. curPath = QCoreApplication.applicationDirPath()
  62. QMessageBox.information(self, '提示', '请选择以版本代码+发料日期为名的.txt文件')
  63. # 调用打开文件对话框打开一个文件
  64. QFileName = QFileDialog.getOpenFileName(self, "选取文件", curPath,
  65. "文本文件(*.txt)")
  66. if QFileName[0]:
  67. fileName = QFileName[0].split("/")[-1].split(".")[0].split("_")
  68. if len(fileName)==2:
  69. versionCode = fileName[0]
  70. deliveryDate = fileName[1]
  71. self.ui.Deliverydate.setText(deliveryDate)
  72. self.ui.versionCode.setText(versionCode)
  73. f = open(QFileName[0], 'r',encoding='utf-8')
  74. with f:
  75. data = f.read()
  76. self.ui.plainTextEdit.setPlainText(data)
  77. else:
  78. QMessageBox.critical(self,'错误','请选择以版本代码+发料日期为名的.txt文件')
  79. # 文件另存为
  80. def actSaveTriggered(self):
  81. desktopPath = Configuration().get_desktop()
  82. versionCode = self.ui.versionCode.text()
  83. Deliverydate = self.ui.Deliverydate.text()
  84. filenameStr = versionCode + "_" + Deliverydate + ".txt"
  85. filePathName = desktopPath + '\\' + folderName + '\\' + filenameStr
  86. aFileName = QFileDialog.getSaveFileName(self, "另存为", filePathName, "文本文档(*.txt)")
  87. text = self.ui.plainTextEdit.toPlainText()
  88. if str(aFileName[0]) == "":
  89. QMessageBox.warning(self, "提示", "没有保存数据,请重新保存。")
  90. saveFlag = 0
  91. return aFileName, saveFlag
  92. else:
  93. saveFlag = 1
  94. try:
  95. with open(aFileName[0], 'w') as f:
  96. f.write(text)
  97. except Exception as e:
  98. QMessageBox.information(self, "提示", str(e), )
  99. QMessageBox.information(self, "提示", "数据文件保存成功!", QMessageBox.Ok)
  100. return aFileName, saveFlag
  101. # 物料类别选择
  102. def materialTypeChanged(self, materialType):
  103. if not materialType == '无':
  104. str = "= = = = = = = = = = = = " + materialType + " = = = = = = = = = = = = ="
  105. self.ui.plainTextEdit.insertPlainText(str +"\n")
  106. self.ui.plainTextEdit.insertPlainText("\n")
  107. # 创建保存文件的文件夹
  108. # def mkdirFile(self):
  109. #
  110. # desktopPath = Configuration().get_desktop()
  111. #
  112. # folderNamePath = desktopPath + '\\' + folderName
  113. #
  114. # if not os.path.exists(folderNamePath):
  115. # os.mkdir(folderNamePath)
  116. # else:
  117. # return True
  118. # 添加物料类别的界面 目前没用
  119. def openDialog(self):
  120. dialog = Dialogadd(self)
  121. # 连接【子窗口内置消息和主窗口的槽函数】
  122. # dialog.datetime.dateChanged.connect(self.slot_inner)
  123. # 连接【子窗口自定义消息和主窗口槽函数】
  124. dialog.dialogSignel.connect(self.slot_emit)
  125. dialog.show()
  126. def closeThread(self):
  127. self.autoSave.stop()
  128. def closeEvent(self, event):
  129. # # desktopPath = Configuration().get_desktop()
  130. #
  131. versionCode = self.ui.versionCode.text()
  132. deliveryDate = self.ui.Deliverydate.text()
  133. filenameStr = versionCode + "_" + deliveryDate + ".txt"
  134. filePath = self.directory
  135. filePathName = filePath + '/' + filenameStr
  136. result = QMessageBox.question(self, "注意:", "将文件保存到"+filePathName, QMessageBox.Ok)
  137. if result == QMessageBox.Ok:
  138. txt = self.ui.plainTextEdit.toPlainText()
  139. file = open(filePathName, 'w',encoding="utf-8")
  140. file.write(txt)
  141. file.close()
  142. #关闭线程
  143. self.autoSave.terminate() # 结束此进程
  144. self.autoSave.wait() # 等待结束完成
  145. if self.autoSave.isFinished(): # 如果当前线程已经完成工作,则删除
  146. del self.autoSave
  147. event.accept()
  148. else:
  149. event.ignore()
  150. # QMessageBox.information(self, "消息", "谢谢!")
  151. # 自动保存 线程任务
  152. class AutoSaveThread(QThread):
  153. # 初始化传参
  154. def __init__(self, inputDiog,directory,parent=None):
  155. super(AutoSaveThread, self).__init__(parent)
  156. self.inputDiog = inputDiog
  157. self.versionCode = inputDiog.ui.versionCode.text()
  158. self.deliveryDate = inputDiog.ui.Deliverydate.text()
  159. self.directory = directory
  160. def run(self):
  161. self.loop_monitor()
  162. def time_printer(self):
  163. # 定时
  164. if self.inputDiog.ui.plainTextEdit.toPlainText():
  165. # desktopPath = Configuration().get_desktop()
  166. versionCode = self.versionCode
  167. deliveryDate = self.deliveryDate
  168. filePath = self.directory
  169. filenameStr = versionCode+"_"+deliveryDate + ".txt"
  170. # filePathName = filePath + '\\' + folderName + '\\' + filenameStr
  171. filePathName = filePath + '/' + filenameStr
  172. txt = self.inputDiog.ui.plainTextEdit.toPlainText()
  173. file = open(filePathName, 'w',encoding="utf-8")
  174. file.write(txt)
  175. file.close()
  176. self.loop_monitor()
  177. else:
  178. self.loop_monitor()
  179. def loop_monitor(self):
  180. time.sleep(60*5)
  181. self.time_printer()
  182. if __name__ == '__main__':
  183. import sys
  184. app = QApplication(sys.argv)
  185. ui = ScanInput()
  186. ui.show()
  187. sys.exit(app.exec_())