Exemplo n.º 1
0
class SpinBox(Widget):
    def __init__(self, master, **kwargs):
        self._textv = StringVar()
        super().__init__(tk=ttk.Spinbox(master, textvariable=self._textv),
                         **kwargs)
        self._setter = self.connect_to_prop("value", self.on_changed_value)
        self._trace = self._textv.trace_add(
            "write", lambda *_: self._setter(self._textv.get()))

    def on_changed_value(self, value):
        if value:
            self._textv.set(value)

    def on_disposed(self):
        self._textv.trace_remove("write", self._trace)
        self._setter = None
Exemplo n.º 2
0
class CalendarWidget(Widget):
    def __init__(self, master, **kwargs):
        self._textv = StringVar()
        super().__init__(tk=Datepicker(master,
                                       datevar=self._textv,
                                       dateformat=kwargs.get("node").get_attr(
                                           "dateformat", "%Y-%m-%d")),
                         **kwargs)

        self._setter = self.connect_to_prop("value", self.on_changed_value)
        self._trace = self._textv.trace_add(
            "write", lambda *_: self._setter(self._textv.get()))

    def on_changed_value(self, value):
        self._textv.set(value)

    def on_disposed(self):
        self._textv.trace_remove("write", self._trace)
        self._setter = None
Exemplo n.º 3
0
class RadioButton(Widget):
    def __init__(self, master, **kwargs):
        self._v = StringVar()
        super().__init__(tk=ttk.Radiobutton(master, variable=self._v),
                         **kwargs)
        self._setter = self.connect_to_prop("value", self.on_changed_value)
        self.connect_to_prop("sel", self.on_changed_sel)
        self._trace = self._v.trace_add("write",
                                        lambda *_: self._setter(self._v.get()))

    def on_changed_value(self, value):
        self._v.set(value)

    def on_changed_sel(self, value):
        self._tk.config(value=value)

    def on_disposed(self):
        self._v.trace_remove("write", self._trace)
        self._trace = None
        self._setter = None
Exemplo n.º 4
0
class ComboBox(Widget):
    def __init__(self, master, **kwargs):
        self._textv = StringVar()
        super().__init__(tk=AutocompleteCombobox(master=master,
                                                 textvariable=self._textv),
                         **kwargs)

        self._setter = self.connect_to_prop("value", self.on_changed_value)
        self._trace = self._textv.trace_add(
            "write", lambda *_: self._setter(self._textv.get()))
        self.connect_to_prop("suggestion", self.on_changed_suggestion)

    def on_changed_suggestion(self, value):
        if self._textv.get() == None or self._textv.get() == "":
            if value and len(value) > 0:
                self._setter(value[0])
        self._tk.set_completion_list(value if value else [])

    def on_changed_value(self, value):
        self._textv.set(value)

    def on_disposed(self):
        self._textv.trace_remove("write", self._trace)
        self._setter = None