Adalm1000_Logger/gui_main.py
Vincent Hanewinkel dc5269e595 test
2025-08-14 23:01:45 +02:00

67 lines
2.0 KiB
Python

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)