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)
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()
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)