0
0 комментариев

Здравствуйте, запутался с классами в .py и .kv. Проблема в том что я написал несколько отдельных скриптов в надежде их объединить после в один благодаря ScreenManager, отдельно все работает. Поскольку мне нужно было обновлять по времени текст в Lable я в .py файле создавал классы которые использовал позже в .kv файле, но со ScreenManager созданные в .py классы у меня не получаеться использовать в .kv

Вырезка из .py файла

[apcode language=»python»]

class WeatherScreen(Screen):
    pass
 class DistanceScreen(Screen):
    pass
 # Create the screen manager
sm = ScreenManager()
sm.add_widget(WeatherScreen(name='idweatherscreen'))
sm.add_widget(DistanceScreen(name='iddistancescreen'))
 ... 
 class NowImageLabel(Label): # Класс для обновления текущей иконки
    def __init__(self, **kwargs):
        super(NowImageLabel, self).__init__(**kwargs)
        Clock.schedule_once(self.update, 5)
        Clock.schedule_interval(self.update, 60)
    def update(self, *args):
        try:
           ...

[/apcode]

Отрывок файла .kv

[apcode language=»python»]

<WeatherScreen>:
                   NowImageLabel:  # Основной значек погоды
                   background_color: 0,1,0,1
                   source: '0.png'
                   size: self.texture_size

[/apcode]

В итоге у меня не получается использовать класс созданный в .py файле как Lable в .kv файле. Код ошибки:

raise FactoryException(‘Unknown class <%s>’ % name)
kivy.factory.FactoryException: Unknown class <NowImageLabel>

Если вместо класса в .kv файле использовать просто Booton или Lable все работает, извиняюсь за табуляцию и отступы в коде, конечно же в скрипте они выдержаны правильно (вроде).

Мне кажется ответ элементарный, но в силу своей неопытности я не смог пока его найти.

Заранее спасибо.


Добавить комментарий