def __init__(self, label, choices, value=None, check=True, radio=False): super().__init__(label, value=value, check=check) if radio: self.widget = custom_widgets.SelectionWidget(layout="vertical") else: self.widget = widgets.ComboBox() for item in choices: if isinstance(item, tuple): if len(item) == 2: self.widget.add(item[1], item[0]) elif len(item) == 3: self.widget.add(item[1], item[0], item[2]) else: self.widget.add(item) if value is not None: self.widget.set_value(value)
def test_combobox(): box = widgets.ComboBox() box.set_disabled() box.set_enabled() box.add("test", data="data", icon="mdi.timer") assert len(box) == 1 box.set_insert_policy("bottom") assert box.get_insert_policy() == "bottom" with pytest.raises(ValueError): box.set_insert_policy("bla") box.set_size_adjust_policy("first_show") with pytest.raises(ValueError): box.set_size_adjust_policy("bla") box.set_icon_size(10) box.set_min_char_length(10) with open("data.pkl", "wb") as jar: pickle.dump(box, jar) with open("data.pkl", "rb") as jar: box = pickle.load(jar) repr(box)
def _create_widget( self, ) -> custom_widgets.ColorChooserButton | widgets.ComboBox: if self.radio: widget = custom_widgets.SelectionWidget(layout="vertical") else: widget = widgets.ComboBox() if isinstance(self.choices, Mapping): widget.add_items(self.choices) else: for item in self.choices: if isinstance(item, tuple): if len(item) == 2: widget.add(item[1], item[0]) elif len(item) == 3: widget.add(item[1], item[0], item[2]) else: widget.add(item) if self.value is not None: widget.set_value(self.value) return widget
def __init__(self): super().__init__() self.setMinimumSize(400, 300) self.set_title("Icon Browser") from prettyqt import iconprovider iconprovider._instance() font_maps = iconprovider._instance().charmap icon_names = [ f"{font_collection}.{icon_name}" for font_collection, font_data in font_maps.items() for icon_name in font_data ] self._filter_timer = core.Timer(self) self._filter_timer.setSingleShot(True) self._filter_timer.setInterval(AUTO_SEARCH_TIMEOUT) self._filter_timer.timeout.connect(self._update_filter) model = IconModel(self.get_palette().get_color("text")) model.setStringList(sorted(icon_names)) self._proxy_model = core.SortFilterProxyModel() self._proxy_model.setSourceModel(model) self._proxy_model.set_filter_case_sensitive(True) self._listview = IconListView(self) self._listview.setUniformItemSizes(True) self._listview.set_view_mode("icon") self._listview.set_model(self._proxy_model) self._listview.set_contextmenu_policy("custom") self._listview.doubleClicked.connect(self._copy_icon_text) self._lineedit = widgets.LineEdit(parent=self) self._lineedit.textChanged.connect(self._filter_timer.restart) self._lineedit.returnPressed.connect(self._trigger_instant_update) self._combobox = widgets.ComboBox(parent=self) self._combobox.setMinimumWidth(75) self._combobox.currentIndexChanged.connect( self._trigger_instant_update) self._combobox.addItems([ALL_COLLECTIONS] + sorted(font_maps.keys())) lyt = widgets.BoxLayout("horizontal") lyt.set_margin(0) lyt.add(self._combobox) lyt.add(self._lineedit) search_bar_frame = widgets.Frame(self) search_bar_frame.setLayout(lyt) self._copy_button = widgets.PushButton("Copy Name", self) self._copy_button.clicked.connect(self._copy_icon_text) lyt = widgets.BoxLayout("vertical") lyt.add(search_bar_frame) lyt.add(self._listview) lyt.add(self._copy_button) frame = widgets.Frame(self) frame.set_layout(lyt) self.setCentralWidget(frame) widgets.Shortcut(gui.KeySequence("return"), self, self._copy_icon_text) self._lineedit.setFocus() self.center()
def test_combobox(): box = widgets.ComboBox() box.show() box.close()