# 使用watchdog來觀察資料夾的變動 from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler from PySide6.QtCore import QCoreApplication, QEvent from console import DBG_PRINT class FileChangeHandler(FileSystemEventHandler): def __init__(self, main_window): self.main_window = main_window def on_modified(self, event): DBG_PRINT(f"is_directory: {event.is_directory}, path: {event.src_path}",tag="on_modified") if event.src_path.endswith("my_widget.py"): # 監測 `my_widget.py` 變動 DBG_PRINT(f"{event.src_path} 已變更,重新載入該 Widget...", tag="Reload Handler") QCoreApplication.postEvent(self.main_window, QEvent(QEvent.User)) def start_watcher(main_window): event_handler = FileChangeHandler(main_window) observer = Observer() observer.schedule(event_handler, path="./widgets", recursive=False) observer.start() # 在主程式結束時停止監聽 import atexit atexit.register(observer.stop)