Esempio n. 1
0
def add_layout_items(layout: QLayout, items: Iterable[Union[QWidget,
                                                            QLayout]]):
    for item in items:
        if isinstance(item, QWidget):
            layout.addWidget(item)
        else:
            layout.addLayout(item)
Esempio n. 2
0
    def _init_stats(self, layout: qtw.QLayout) -> None:

        # histograms

        self._qw_hist = self._add_widget(layout,
                                         BarGraph(*self._init_histogram()))

        self._qw_hist_cum = self._add_widget(
            layout, BarGraph(*self._init_histogram(cum=True)))

        # text stats

        layout.addLayout(self._init_text_stats())
        self._update_text_stats()
Esempio n. 3
0
    def _add_slider(self,
                    parent: qtw.QLayout,
                    callback,
                    smin: int,
                    smax: int,
                    sfac: float = 1.0,
                    initial: float = None,
                    label: str = None):
        """
        Utility method to easily add sliders

        """
        qlabel = None
        slider = qtw.QSlider(qtc.Qt.Horizontal, self)
        slider.setFocusPolicy(qtc.Qt.NoFocus)

        slider.setMinimum(smin)
        slider.setMaximum(smax)

        if initial is not None:
            slider.setValue(initial * sfac)

        # proxies the slider-released-event to update the label
        # containing the current value and applying the factor
        # before invoking the provided callback
        def proxy():
            val = slider.value() / sfac
            if qlabel is not None:
                qlabel.setText(str(val))
            callback(val)

        slider.sliderReleased.connect(proxy)

        if label is not None:
            layout = qtw.QHBoxLayout()
            layout.addWidget(qtw.QLabel(label))

            qlabel = qtw.QLabel(str(initial or ""))
            layout.addWidget(qlabel)

            parent.addLayout(layout)

        parent.addWidget(slider)