66 lines
1.6 KiB
Python
66 lines
1.6 KiB
Python
from ubuntu_font import ubuntu_font
|
|
|
|
DISPLAY_TEXT = "Hello World!"
|
|
MSG_NEW_SIZE = 1
|
|
|
|
#
|
|
# Change font size with Tiny_TTF
|
|
#
|
|
|
|
lsize = 25
|
|
|
|
# Define the object that will be sent as msg payload
|
|
class NewValue:
|
|
def __init__(self, value):
|
|
self.value = value
|
|
def __repr__(self):
|
|
return f"{self.value} %"
|
|
|
|
def slider_event_cb(e,label):
|
|
|
|
slider = e.get_target_obj()
|
|
lsize = slider.get_value()
|
|
label.set_text("{:d}".format(lsize))
|
|
lv.msg_send(MSG_NEW_SIZE, NewValue(lsize))
|
|
|
|
|
|
def label_event_cb(e,font):
|
|
|
|
label = e.get_target_obj()
|
|
m = e.get_msg()
|
|
payload = m.get_payload()
|
|
v = payload.__cast__()
|
|
lv.tiny_ttf_set_size(font, v.value)
|
|
label.set_text(DISPLAY_TEXT)
|
|
|
|
# Create style with the new font
|
|
style = lv.style_t()
|
|
style.init()
|
|
font = lv.tiny_ttf_create_data(ubuntu_font, len(ubuntu_font),lsize)
|
|
style.set_text_font(font)
|
|
style.set_text_align(lv.TEXT_ALIGN.CENTER)
|
|
|
|
slider = lv.slider(lv.scr_act())
|
|
slider.center()
|
|
slider.set_range(5, 50)
|
|
slider.set_value(lsize, lv.ANIM.OFF)
|
|
slider.align(lv.ALIGN.BOTTOM_MID, 0, -50)
|
|
|
|
slider_label = lv.label(lv.scr_act())
|
|
slider_label.set_text("{:d}".format(lsize))
|
|
slider_label.align_to(slider, lv.ALIGN.OUT_BOTTOM_MID, 0, 10)
|
|
|
|
slider.add_event(lambda e: slider_event_cb(e,slider_label), lv.EVENT.VALUE_CHANGED, None)
|
|
|
|
# Create a label with the new style
|
|
label = lv.label(lv.scr_act())
|
|
label.add_style(style, 0)
|
|
label.add_event(lambda e: label_event_cb(e,font), lv.EVENT.MSG_RECEIVED, None)
|
|
label.set_size(lv.SIZE_CONTENT, lv.SIZE_CONTENT)
|
|
label.center()
|
|
|
|
lv.msg_subscribe_obj(MSG_NEW_SIZE, label, None)
|
|
lv.msg_send(MSG_NEW_SIZE, NewValue(lsize))
|
|
|
|
|