import sys from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QListWidgetItem, QVBoxLayout, QPushButton, QLabel, QHBoxLayout from multi_logger import MultiLogger class ListItemWidget(QWidget): def __init__(self, label, worker): super().__init__() self.worker = worker lay = QHBoxLayout(self) lay.addWidget(QLabel(label)) lay.addStretch() self.btn_start = QPushButton("Start") self.btn_stop = QPushButton("Stop") self.btn_stop.setEnabled(False) self.btn_start.clicked.connect(self._on_start) self.btn_stop.clicked.connect(self._on_stop) lay.addWidget(self.btn_start) lay.addWidget(self.btn_stop) lay.setContentsMargins(5,2,5,2) def _on_start(self): self.worker.start() self.btn_start.setEnabled(False) self.btn_stop.setEnabled(True) def _on_stop(self): self.worker.stop() self.btn_start.setEnabled(True) self.btn_stop.setEnabled(False) class MainWindow(QWidget): def __init__(self, mlog: MultiLogger): super().__init__() self.mlog = mlog self.setWindowTitle("Multi-Geräte-Logger") self.resize(420, 320) main = QVBoxLayout(self) self.list = QListWidget() main.addWidget(self.list) for w in self.mlog.workers: item = QListWidgetItem() widget = ListItemWidget(w.serial, w) item.setSizeHint(widget.sizeHint()) self.list.addItem(item) self.list.setItemWidget(item, widget) if __name__ == "__main__": # 1) Logger + Geräte ml = MultiLogger(outdir="./logs", filter_window_size=10, interval=0.1) print("Gefundene Geräte:", [w.serial for w in ml.workers]) ml.set_default_modes() # 2) Session EINMAL im Hauptthread starten (wie beim Single-Logger!) ml.start_session() # 3) GUI app = QApplication(sys.argv) win = MainWindow(ml) win.show() rc = app.exec_() # 4) Sauber beenden ml.stop_all() ml.shutdown() sys.exit(rc)