Merge pull request #43 from jahr/label-text-align

Added text alignment to the Label widget
pull/46/head
Peter Hinch 2022-12-19 10:54:00 +00:00 zatwierdzone przez GitHub
commit a2e0327c87
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
1 zmienionych plików z 18 dodań i 2 usunięć

Wyświetl plik

@ -3,12 +3,17 @@
# Released under the MIT License (MIT). See LICENSE.
# Copyright (c) 2018-2020 Peter Hinch
from micropython import const
from gui.core.nanogui import DObject
from gui.core.writer import Writer
ALIGN_LEFT = const(0)
ALIGN_RIGHT = const(1)
ALIGN_CENTER = const(2)
# text: str display string int save width
class Label(DObject):
def __init__(self, writer, row, col, text, invert=False, fgcolor=None, bgcolor=None, bdcolor=False):
def __init__(self, writer, row, col, text, invert=False, fgcolor=None, bgcolor=None, bdcolor=False, align=ALIGN_LEFT):
# Determine width of object
if isinstance(text, int):
width = text
@ -17,6 +22,7 @@ class Label(DObject):
width = writer.stringlen(text)
height = writer.height
super().__init__(writer, row, col, height, width, fgcolor, bgcolor, bdcolor)
self.align = align
if text is not None:
self.value(text, invert)
@ -39,7 +45,17 @@ class Label(DObject):
super().show() # Draw or erase border
wri = self.writer
dev = self.device
Writer.set_textpos(dev, self.row, self.col)
if self.align == ALIGN_LEFT:
Writer.set_textpos(dev, self.row, self.col)
else:
txt_width = wri.stringlen(txt)
if self.width <= txt_width:
Writer.set_textpos(dev, self.row, self.col)
else:
if self.align == ALIGN_RIGHT:
Writer.set_textpos(dev, self.row, self.col + self.width - txt_width)
else:
Writer.set_textpos(dev, self.row, self.col + self.width // 2 - txt_width // 2)
wri.setcolor(self.fgcolor, self.bgcolor)
wri.printstring(txt, self.invert)
wri.setcolor() # Restore defaults