def init_ui(self, layout_cls=None): super().init_ui() layout_cls = first_valid(layout_cls=layout_cls, LAYOUT_CLS=self.LAYOUT_CLS, _self=self) layout = layout_cls(self) with self.setup_provided(layout): self.not_none_checkbox = QCheckBox() self.not_none_checkbox.toggled.connect(self._not_none_changed) layout.addWidget(self.not_none_checkbox) self.inner = self.inner_template() self.inner.on_change.connect(self.change_value) self.inner.setEnabled(False) layout.addWidget(self.inner) for p in chain(self.inner.provided_pre(), self.inner.provided_post()): p.hide() self.warden = self.MouseWarden(target=self.inner, dispatch=partial( self.not_none_checkbox.setChecked, True)) QApplication.instance().installEventFilter(self.warden) return layout
def gdalos_qt_main(): from fidget.backend.QtWidgets import QApplication from fidget.backend.QtWidgets import QVBoxLayout from fidget.core import Fidget from fidget.widgets import FidgetMatrix, FidgetMinimal, FidgetQuestion from fidget.widgets.__util__ import CountBounds from gdalos.gdalos_trans import gdalos_trans from gdalos_qt.gdalos_widget import GdalosWidget app = QApplication( [] ) # this app variable is needed, because otherwise python will delete the QApplication q = FidgetQuestion( FidgetMatrix( FidgetMinimal( GdalosWidget(make_title=True, make_plaintext=True, make_indicator=True), make_title=False, make_plaintext=False, make_indicator=False, initial_value={}, ), rows=CountBounds(1, 1, None), columns=1, make_plaintext=True, make_title=True, make_indicator=False, layout_cls=QVBoxLayout, scrollable=True, ), flags=Fidget.FLAGS, ) q.show() result = q.exec() print(result) if result.is_ok() and result.value is not None: for v in result.value: d = dict(v[0]) d2 = dict() for k, v in d.items(): new_k = k.replace(" ", "_") d2[new_k] = d[k] print(gdalos_trans(**d2))
def mutate_focus(ro, co): focus = QApplication.focusWidget() index = -1 while index == -1: focus = focus.parent() if not focus: event.ignore() return index = self.grid_layout.indexOf(focus) r, c, *_ = self.grid_layout.getItemPosition(index) r += ro c += co if r <= 0 or c <= 0: # avoid row/column buttons event.ignore() return item = self.grid_layout.itemAtPosition(r, c) if not item: event.ignore() return to_focus = item.widget() to_focus.setFocus()
MAKE_INDICATOR = False MAKE_PLAINTEXT = False LAYOUT_CLS = QHBoxLayout class NodatavalueWidgetDst(FidgetStacked[Optional[Union[float, type(...)]]]): INNER_TEMPLATES = [ FidgetConst.template("don't change", option=("None", None)), FidgetConst.template("change to default value (for DTM)", option=("...", ...)), FidgetInt.template("change to a set value"), ] SELECTOR_CLS = "radio" MAKE_TITLE = True MAKE_INDICATOR = False MAKE_PLAINTEXT = False LAYOUT_CLS = QHBoxLayout if __name__ == "__main__": from fidget.backend.QtWidgets import QApplication from fidget.widgets import FidgetOptional app = QApplication([]) # w = FidgetOptional(NodatavalueWidget("sample nodatavalue")) # w = NodatavalueWidgetSrc("sample nodatavalue", initial_value=None) # todo: setting initial_value doesn't work w = NodatavalueWidgetSrc("sample nodatavalue") w.show() app.exec_() print(w.value())
from fidget.backend.QtWidgets import QApplication, QHBoxLayout, QFrame from fidget.widgets import FidgetLabel, FidgetInt, FidgetStacked if __name__ == '__main__': app = QApplication([]) w = FidgetStacked('number', [ FidgetLabel('auto', initial=('auto', 123456)), FidgetInt('raw text'), ], make_plaintext=True, frame_style=QFrame.Box, selector_cls=FidgetStacked.CheckBoxSelector, layout_cls=QHBoxLayout, make_indicator=False) w.show() res = app.exec_() print(w.value()) exit(res)
from fidget.widgets.user_util import FidgetInt from fidget.backend import prefer # prefer('PySide6') from fidget.backend.QtWidgets import QVBoxLayout from fidget.widgets import FidgetQuestion, FidgetMatrix, FidgetMinimal, FidgetDict from fidget.widgets.__util__ import CountBounds if __name__ == '__main__': from fidget.backend.QtWidgets import QApplication app = QApplication([]) q = FidgetQuestion(FidgetMatrix(FidgetMinimal(FidgetDict( 'sample', [FidgetInt('X'), FidgetInt('Y')], make_title=True, make_indicator=True, make_plaintext=True), make_plaintext=False, make_indicator=False, make_title=False, initial_value=None), rows=CountBounds(1, 1, None), columns=1, make_plaintext=True, make_title=True, make_indicator=False, layout_cls=QVBoxLayout), cancel_value=None) q.show() result = q.exec_()