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, text, worker): super().__init__() self.worker = worker layout = QHBoxLayout(self) layout.addWidget(QLabel(text)) layout.addStretch() btn_start = QPushButton("Start") btn_stop = QPushButton("Stop") btn_start.clicked.connect(lambda: self.worker.start()) btn_stop.clicked.connect(lambda: self.worker.stop()) layout.addWidget(btn_start) layout.addWidget(btn_stop) layout.setContentsMargins(5, 2, 5, 2) class MainWindow(QWidget): def __init__(self, logger): super().__init__() self.logger = logger self.setWindowTitle("Multi-Geräte-Logger") self.resize(400, 300) main_layout = QVBoxLayout(self) self.list_widget = QListWidget() main_layout.addWidget(self.list_widget) for worker in self.logger.workers: item = QListWidgetItem() widget = ListItemWidget(worker.serial, worker) item.setSizeHint(widget.sizeHint()) self.list_widget.addItem(item) self.list_widget.setItemWidget(item, widget) if __name__ == "__main__": ml = MultiLogger(outdir="./logs", filter_window_size=10, interval=0.1) ml.set_default_modes() app = QApplication(sys.argv) window = MainWindow(ml) window.show() sys.exit(app.exec_())