1# Will be called when the styles of the base theme are already added 2# to add new styles 3 4 5class NewTheme(lv.theme_t): 6 def __init__(self): 7 super().__init__() 8 # Initialize the styles 9 self.style_btn = lv.style_t() 10 self.style_btn.init() 11 self.style_btn.set_bg_color(lv.palette_main(lv.PALETTE.GREEN)) 12 self.style_btn.set_border_color(lv.palette_darken(lv.PALETTE.GREEN, 3)) 13 self.style_btn.set_border_width(3) 14 15 # This theme is based on active theme 16 th_act = lv.theme_get_from_obj(lv.scr_act()) 17 # This theme will be applied only after base theme is applied 18 self.set_parent(th_act) 19 20 21class ExampleStyle_14: 22 23 def __init__(self): 24 # 25 # Extending the current theme 26 # 27 28 btn = lv.btn(lv.scr_act()) 29 btn.align(lv.ALIGN.TOP_MID, 0, 20) 30 31 label = lv.label(btn) 32 label.set_text("Original theme") 33 34 self.new_theme_init_and_set() 35 36 btn = lv.btn(lv.scr_act()) 37 btn.align(lv.ALIGN.BOTTOM_MID, 0, -20) 38 39 label = lv.label(btn) 40 label.set_text("New theme") 41 42 def new_theme_apply_cb(self, th, obj): 43 print(th,obj) 44 if obj.get_class() == lv.btn_class: 45 obj.add_style(self.th_new.style_btn, 0) 46 47 def new_theme_init_and_set(self): 48 print("new_theme_init_and_set") 49 # Initialize the new theme from the current theme 50 self.th_new = NewTheme() 51 self.th_new.set_apply_cb(self.new_theme_apply_cb) 52 lv.disp_get_default().set_theme(self.th_new) 53 54 55exampleStyle_14 = ExampleStyle_14() 56