WeldingSpotPerformance/src/main.py

81 lines
2.6 KiB
Python
Raw Normal View History

import pyqtgraph as pg
from src.gui import app
import os
import time
from PyQt5.QtCore import QThread, pyqtSignal, QObject
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
def main():
pg.mkQApp()
apps = appHandler
directory_path = "D:/downloads/a22"
file_watcher_thread = FileWatcherThread(directory_path)
file_watcher_thread.worker.file_detected.connect(get)
file_watcher_thread.start()
pg.exec()
#temp = app()
def get(path):
time.sleep(1)
temp = app(path)
class appHandler:
def __init__(self):
self.appTemp = []
def makeApp(self, result):
self.appTemp.append(app(result))
class FileWatcherWorker(QObject):
file_detected = pyqtSignal(str) # Сигнал для передачи пути к новому файлу
def __init__(self, directory_path):
super().__init__()
self.directory_path = directory_path
self.observer = Observer()
self._running = True
def start_watching(self):
# Настраиваем наблюдателя и запускаем его
event_handler = CSVFileHandler(self.file_detected)
self.observer.schedule(event_handler, self.directory_path, recursive=False)
self.observer.start()
def stop_watching(self):
self._running = False
self.observer.stop()
self.observer.join()
class CSVFileHandler(FileSystemEventHandler):
def __init__(self, file_detected_signal):
super().__init__()
self.file_detected_signal = file_detected_signal
def on_created(self, event):
# Проверяем, что это файл и что он имеет расширение .csv
if not event.is_directory and event.src_path.endswith(".csv"):
abs_path = os.path.abspath(event.src_path)
print(f"Найден новый CSV файл: {abs_path}")
self.file_detected_signal.emit(abs_path) # Испускаем сигнал с путем к файлу
class FileWatcherThread(QThread):
def __init__(self, directory_path):
super().__init__()
self.worker = FileWatcherWorker(directory_path)
def run(self):
self.worker.start_watching() # Запуск наблюдателя
self.exec_() # Запускаем событийный цикл в потоке
def stop(self):
self.worker.stop_watching() # Остановка наблюдателя
if __name__ == '__main__':
main()