从python到kivy的引用出错了
问题在.kv文件中。我的问题是我希望我的.kv注意到我的.py中的object属性。如果将.kv中的颜色更改为从python到kivy的引用出错了,python,kivy,kivy-language,Python,Kivy,Kivy Language,问题在.kv文件中。我的问题是我希望我的.kv注意到我的.py中的object属性。如果将.kv中的颜色更改为color:0,0,0,则我的代码将正常工作,这将按预期提供黑色文本 白痴 .kv : 改变颜色:改变颜色 id:颜色改变了 标记:正确 颜色:self.color#root.color也不起作用,但0,0,0会给我黑色。 不透明度:如果self.state=='normal'else,则为1。8 字号:38 : 这是创建一个从ButtonBehavior和Label继承的新窗口小部件
color:0,0,0
,则我的代码将正常工作,这将按预期提供黑色文本
白痴
.kv
:
改变颜色:改变颜色
id:颜色改变了
标记:正确
颜色:self.color#root.color也不起作用,但0,0,0会给我黑色。
不透明度:如果self.state=='normal'else,则为1。8
字号:38
:
这是创建一个从ButtonBehavior和Label继承的新窗口小部件类的kv语法,因此它没有任何Python定义的类的行为,而这些行为恰好具有相同的名称
您只需要执行:
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)
<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
<ThemedButton@ButtonBehavior+Label>: