diff --git a/adafruit_button/button.py b/adafruit_button/button.py index 45c87f7..22ffe55 100644 --- a/adafruit_button/button.py +++ b/adafruit_button/button.py @@ -26,6 +26,13 @@ from adafruit_display_shapes.roundrect import RoundRect from adafruit_button.button_base import ButtonBase, _check_color +try: + from typing import Optional, Union + from fontio import FontProtocol + from displayio import Group +except ImportError: + pass + __version__ = "0.0.0+auto.0" __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_Display_Button.git" @@ -117,22 +124,22 @@ def _create_body(self): def __init__( self, *, - x, - y, - width, - height, - name=None, - style=RECT, - fill_color=0xFFFFFF, - outline_color=0x0, - label=None, - label_font=None, - label_color=0x0, - selected_fill=None, - selected_outline=None, - selected_label=None, - label_scale=None - ): + x: int, + y: int, + width: int, + height: int, + name: Optional[str] = None, + style: int = RECT, + fill_color: Optional[Union[int, tuple[int, int, int]]] = 0xFFFFFF, + outline_color: Optional[Union[int, tuple[int, int, int]]] = 0x0, + label: Optional[str] = None, + label_font: Optional[FontProtocol] = None, + label_color: Optional[Union[int, tuple[int, int, int]]] = 0x0, + selected_fill: Optional[Union[int, tuple[int, int, int]]] = None, + selected_outline: Optional[Union[int, tuple[int, int, int]]] = None, + selected_label: Optional[Union[int, tuple[int, int, int]]] = None, + label_scale: Optional[int] = None + ) -> None: super().__init__( x=x, y=y, @@ -167,7 +174,7 @@ def __init__( self.label = label - def _subclass_selected_behavior(self, value): + def _subclass_selected_behavior(self, value: bool) -> None: if self._selected: new_fill = self.selected_fill new_out = self.selected_outline @@ -180,7 +187,7 @@ def _subclass_selected_behavior(self, value): self.body.outline = new_out @property - def group(self): + def group(self) -> Group: """Return self for compatibility with old API.""" print( "Warning: The group property is being deprecated. " @@ -189,7 +196,7 @@ def group(self): ) return self - def contains(self, point): + def contains(self, point: tuple[int, int]) -> bool: """Used to determine if a point is contained within a button. For example, ``button.contains(touch)`` where ``touch`` is the touch point on the screen will allow for determining that a button has been touched. @@ -199,56 +206,56 @@ def contains(self, point): ) @property - def fill_color(self): + def fill_color(self) -> int: """The fill color of the button body""" return self._fill_color @fill_color.setter - def fill_color(self, new_color): + def fill_color(self, new_color: int) -> None: self._fill_color = _check_color(new_color) if not self.selected: self.body.fill = self._fill_color @property - def outline_color(self): + def outline_color(self) -> int: """The outline color of the button body""" return self._outline_color @outline_color.setter - def outline_color(self, new_color): + def outline_color(self, new_color: int) -> None: self._outline_color = _check_color(new_color) if not self.selected: self.body.outline = self._outline_color @property - def selected_fill(self): + def selected_fill(self) -> int: """The fill color of the button body when selected""" return self._selected_fill @selected_fill.setter - def selected_fill(self, new_color): + def selected_fill(self, new_color: int) -> None: self._selected_fill = _check_color(new_color) if self.selected: self.body.fill = self._selected_fill @property - def selected_outline(self): + def selected_outline(self) -> int: """The outline color of the button body when selected""" return self._selected_outline @selected_outline.setter - def selected_outline(self, new_color): + def selected_outline(self, new_color: int) -> None: self._selected_outline = _check_color(new_color) if self.selected: self.body.outline = self._selected_outline @property - def width(self): + def width(self) -> int: """The width of the button""" return self._width @width.setter - def width(self, new_width): + def width(self, new_width: int) -> None: self._width = new_width self._empty_self_group() self._create_body() @@ -257,12 +264,12 @@ def width(self, new_width): self.label = self.label @property - def height(self): + def height(self) -> int: """The height of the button""" return self._height @height.setter - def height(self, new_height): + def height(self, new_height: int) -> None: self._height = new_height self._empty_self_group() self._create_body() @@ -270,7 +277,7 @@ def height(self, new_height): self.append(self.body) self.label = self.label - def resize(self, new_width, new_height): + def resize(self, new_width: int, new_height: int) -> None: """Resize the button to the new width and height given :param new_width int the desired width :param new_height int the desired height diff --git a/adafruit_button/button_base.py b/adafruit_button/button_base.py index 8a7709c..c906c90 100644 --- a/adafruit_button/button_base.py +++ b/adafruit_button/button_base.py @@ -23,6 +23,12 @@ from adafruit_display_text.bitmap_label import Label from displayio import Group +try: + from typing import Optional, Union + from fontio import FontProtocol +except ImportError: + pass + def _check_color(color): # if a tuple is supplied, convert it to a RGB number @@ -50,16 +56,16 @@ class ButtonBase(Group): def __init__( self, *, - x, - y, - width, - height, - name=None, - label=None, - label_font=None, - label_color=0x0, - selected_label=None, - label_scale=None + x: int, + y: int, + width: int, + height: int, + name: Optional[str] = None, + label: Optional[str] = None, + label_font: Optional[FontProtocol] = None, + label_color: Optional[Union[int, tuple[int, int, int]]] = 0x0, + selected_label: Optional[Union[int, tuple[int, int, int]]] = None, + label_scale: Optional[int] = None ): super().__init__(x=x, y=y) self.x = x @@ -76,12 +82,12 @@ def __init__( self._label_scale = label_scale or 1 @property - def label(self): + def label(self) -> str: """The text label of the button""" return getattr(self._label, "text", None) @label.setter - def label(self, newtext): + def label(self, newtext: str) -> None: if self._label and self and (self[-1] == self._label): self.pop() @@ -120,12 +126,12 @@ def _subclass_selected_behavior(self, value): pass @property - def selected(self): + def selected(self) -> bool: """Selected inverts the colors.""" return self._selected @selected.setter - def selected(self, value): + def selected(self, value: bool) -> None: if value == self._selected: return # bail now, nothing more to do self._selected = value @@ -140,20 +146,20 @@ def selected(self, value): self._subclass_selected_behavior(value) @property - def selected_label(self): + def selected_label(self) -> int: """The font color of the button when selected""" return self._selected_label @selected_label.setter - def selected_label(self, new_color): + def selected_label(self, new_color: int) -> None: self._selected_label = _check_color(new_color) @property - def label_color(self): + def label_color(self) -> int: """The font color of the button""" return self._label_color @label_color.setter - def label_color(self, new_color): + def label_color(self, new_color: int): self._label_color = _check_color(new_color) self._label.color = self._label_color diff --git a/adafruit_button/sprite_button.py b/adafruit_button/sprite_button.py index 67fd9ee..f1ca06e 100644 --- a/adafruit_button/sprite_button.py +++ b/adafruit_button/sprite_button.py @@ -24,6 +24,12 @@ from adafruit_imageload import load from adafruit_button.button_base import ButtonBase +try: + from typing import Optional, Union, Tuple + from fontio import FontProtocol +except ImportError: + pass + class SpriteButton(ButtonBase): """Helper class for creating 3x3 Bitmap Spritesheet UI buttons for ``displayio``. @@ -45,19 +51,19 @@ class SpriteButton(ButtonBase): def __init__( self, *, - x, - y, - width, - height, - name=None, - label=None, - label_font=None, - label_color=0x0, - selected_label=None, - bmp_path=None, - selected_bmp_path=None, - transparent_index=None, - label_scale=None + x: int, + y: int, + width: int, + height: int, + name: Optional[str] = None, + label: Optional[str] = None, + label_font: Optional[FontProtocol] = None, + label_color: Optional[Union[int, tuple[int, int, int]]] = 0x0, + selected_label: Optional[Union[int, tuple[int, int, int]]] = None, + bmp_path: Optional[str] = None, + selected_bmp_path: Optional[str] = None, + transparent_index: Optional[int] = None, + label_scale: Optional[int] = None ): if bmp_path is None: raise ValueError("Please supply bmp_path. It cannot be None.") @@ -104,16 +110,16 @@ def __init__( self.label = label @property - def width(self): + def width(self) -> int: """The width of the button""" return self._width @property - def height(self): + def height(self) -> int: """The height of the button""" return self._height - def contains(self, point): + def contains(self, point: Tuple[int, int]): """Used to determine if a point is contained within a button. For example, ``button.contains(touch)`` where ``touch`` is the touch point on the screen will allow for determining that a button has been touched. @@ -122,7 +128,7 @@ def contains(self, point): self.y <= point[1] <= self.y + self.height ) - def _subclass_selected_behavior(self, value): + def _subclass_selected_behavior(self, value: bool) -> None: if self._selected: if self._selected_bmp is not None: self._btn_tilegrid.bitmap = self._selected_bmp pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy