micropython-micro-gui/gui/widgets/checkbox.py

38 wiersze
1.4 KiB
Python

# checkbox.py Extension to ugui providing the Checkbox class
# Released under the MIT License (MIT). See LICENSE.
# Copyright (c) 2019-2021 Peter Hinch
from gui.core.ugui import Widget, display
dolittle = lambda *_ : None
class Checkbox(Widget):
def __init__(self, writer, row, col, *, height=30, fillcolor=None,
fgcolor=None, bgcolor=None, bdcolor=False,
callback=dolittle, args=[], value=False, active=True):
super().__init__(writer, row, col, height, height, fgcolor,
bgcolor, bdcolor, value, active)
super()._set_callbacks(callback, args)
self.fillcolor = fillcolor
def show(self):
if super().show():
x = self.col
y = self.row
ht = self.height
x1 = x + ht - 1
y1 = y + ht - 1
if self._value:
if self.fillcolor is not None:
display.fill_rect(x, y, ht, ht, self.fillcolor)
else:
display.fill_rect(x, y, ht, ht, self.bgcolor)
display.rect(x, y, ht, ht, self.fgcolor)
if self.fillcolor is None and self._value:
display.line(x, y, x1, y1, self.fgcolor)
display.line(x, y1, x1, y, self.fgcolor)
def do_sel(self): # Select was pushed
self.value(not self._value) # Upddate and refresh