Ссылка из питона в киви пропала - PullRequest
0 голосов
/ 09 ноября 2019

Проблема в файле .kv. Моя проблема в том, что я хотел бы, чтобы мой .kv заметил свойство объекта в моем .py. Мой код работает, если изменить цвет в .kv на color: 0,0,0, что дает мне черный текст как намерение.

.py

from kivy import utils
from kivy.animation import Animation 
from kivy.clock import Clock
from kivy.properties import ObjectProperty
from kivy.uix.label import Label
from kivy.lang import Builder
from kivy.uix.button import ButtonBehavior

Builder.load_file("FirebaseLoginScreen/themedwidgets.kv")

class ThemedButton(ButtonBehavior,Label):
    colorchanged = ObjectProperty()
    color = ObjectProperty([0,0,0,1])
    def __init__(self, **kwargs):
        super(ThemedButton, self).__init__(**kwargs)
        Clock.schedule_once(self.start_pulsing, 1)

    def start_pulsing(self, *args):
        anim = Animation(color=[0,1,0,1]) + Animation(color=[0,0,1,1]) + Animation(color=[1,0,0,1]) 
        anim.repeat = True
        anim.start(self)

.kv

<ThemedButton@ButtonBehavior+Label>:
    colorchanged: colorchanged
    id: colorchanged
    markup: True
    color: self.color #root.color doesn't work either but 0,0,0 does give me black. 
    opacity: 1 if self.state == 'normal' else .8
    font_size: 38

1 Ответ

0 голосов
/ 10 ноября 2019
<ThemedButton@ButtonBehavior+Label>:

Это синтаксис kv для создания нового класса виджета, унаследованного от ButtonBehavior и Label, поэтому он не имеет никакого поведения вашего Python-определенного класса, который имеетто же имя.

Вы хотите просто сделать <ThemedButton>: вместо.

...