class Notificator(Factory.BoxLayout, Factory.StencilView): default_font_size = NumericProperty(16) color = ListProperty((1, 1, 1, 1, )) icon_texture_dict = DictProperty() def __init__(self, **kwargs): super().__init__(**kwargs) self.icon_texture_dict = Atlas(ATLAS_PATH).textures def add_notification( self, *, text, font_size=None, icon_key='', duration='4'): item = NotificatorItem( text=text, icon_texture=self.icon_texture_dict.get(icon_key), font_size=( self.default_font_size if font_size is None else font_size), color=self.color, x=self.x, top=self.y, width=self.width,) magnet = Magnet( transitions={'pos': 'linear', }, duration=0.5, size_hint_y=None) item.bind(height=magnet.setter('height')) magnet.add_widget(item) self.add_widget(magnet) Clock.schedule_once( lambda __: fadeout_widget(magnet, duration=2), duration)