text: #!//opt/bin/lv_micropython -i
  import time
  import lvgl as lv
  import display_driver
  
  # Will be called when the styles of the base theme are already added
  # to add new styles
  
  
  class NewTheme(lv.theme_t):
      def __init__(self):
          super().__init__()
          # Initialize the styles
          self.style_btn = lv.style_t()
          self.style_btn.init()
          self.style_btn.set_bg_color(lv.palette_main(lv.PALETTE.GREEN))
          self.style_btn.set_border_color(lv.palette_darken(lv.PALETTE.GREEN, 3))
          self.style_btn.set_border_width(3)
  
          # This theme is based on active theme 
          th_act = lv.theme_get_from_obj(lv.scr_act())
          # This theme will be applied only after base theme is applied
          self.set_parent(th_act)        
          
  class ExampleStyle_14():
      
      def __init__(self):
          # 
          # Extending the current theme
          #
  
          btn = lv.btn(lv.scr_act())
          btn.align(lv.ALIGN.TOP_MID, 0, 20)
  
          label = lv.label(btn)
          label.set_text("Original theme")
          
          self.new_theme_init_and_set()
          
          btn = lv.btn(lv.scr_act())
          btn.align(lv.ALIGN.BOTTOM_MID, 0, -20)
          
          label = lv.label(btn)
          label.set_text("New theme")
          
      def new_theme_apply_cb(self,th, obj):
          print(th,obj)
          if obj.get_class() == lv.btn_class:
              obj.add_style(self.th_new.style_btn, 0)
          
      def new_theme_init_and_set(self):
          print("new_theme_init_and_set")
          # Initialize the new theme from the current theme        
          self.th_new = NewTheme()
          self.th_new.set_apply_cb(self.new_theme_apply_cb)
          lv.disp_get_default().set_theme(self.th_new)
          
  exampleStyle_14 = ExampleStyle_14()
  