import sys, os _root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) _gui = os.path.dirname(os.path.abspath(__file__)) for _p in [_root, _gui]: if _p not in sys.path: sys.path.insert(0, _p) from PyQt5.QtWidgets import ( QWidget, QScrollArea, QGridLayout, QVBoxLayout, QFrame, ) from PyQt5.QtCore import Qt from data_model import ReceiverManager from plot_widget import SinglePlotWidget class PlotTab(QWidget): NUM_PLOTS = 8 def __init__(self, model: ReceiverManager): super().__init__() outer = QVBoxLayout(self) outer.setContentsMargins(0, 0, 0, 0) scroll = QScrollArea() scroll.setWidgetResizable(True) scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) container = QWidget() grid = QGridLayout(container) grid.setContentsMargins(4, 4, 4, 4) grid.setSpacing(6) for i in range(self.NUM_PLOTS): frame = QFrame() frame.setFrameShape(QFrame.StyledPanel) frame.setFrameShadow(QFrame.Raised) fl = QVBoxLayout(frame) fl.setContentsMargins(2, 2, 2, 2) pw = SinglePlotWidget(model) pw.setMinimumHeight(230) fl.addWidget(pw) grid.addWidget(frame, i // 2, i % 2) scroll.setWidget(container) outer.addWidget(scroll)