示例#1
0
 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)
示例#2
0
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)
示例#3
0
 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
示例#4
0
    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()
示例#5
0
def test_combobox():
    box = widgets.ComboBox()
    box.show()
    box.close()