Kivy 中的脉动背景颜色
Pulsing Background Color in Kivy
我是 kivy 的新手,但我真的坚持这一点。有什么方法可以在 canvas 上产生类似于 CSS:
中的这种效果的脉冲背景
https://codepen.io/LukeAskew/pen/gabgom
body {
background-color: #222;
animation-name: color;
animation-duration: 2s;
animation-iteration-count: infinite;
}
@keyframes color {
0% {
background-color: #222;
}
50% {
background-color: #4285f4;
}
100 {
background-color: #222;
}
}
是否可以使用 kivy 做这样的事情?
您可以使用 kivy.Animation
设置背景颜色的动画:
from kivy.animation import Animation
from kivy.app import App
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.uix.widget import Widget
class Pulser(Widget):
bg_color = ObjectProperty([1, 1, 1, 1])
def __init__(self, **kwargs):
super(Pulser, self).__init__(**kwargs)
Clock.schedule_once(self.start_pulsing, 2)
def start_pulsing(self, *args):
anim = Animation(bg_color=[1,0,0,1]) + Animation(bg_color=[1,1,1,1])
anim.repeat = True
anim.start(self)
theRoot = Builder.load_string('''
Pulser:
canvas:
Color:
rgba: self.bg_color
Rectangle:
pos: self.pos
size: self.size
''')
class PulserApp(App):
def build(self):
return theRoot
if __name__ == "__main__":
PulserApp().run()
我是 kivy 的新手,但我真的坚持这一点。有什么方法可以在 canvas 上产生类似于 CSS:
中的这种效果的脉冲背景https://codepen.io/LukeAskew/pen/gabgom
body {
background-color: #222;
animation-name: color;
animation-duration: 2s;
animation-iteration-count: infinite;
}
@keyframes color {
0% {
background-color: #222;
}
50% {
background-color: #4285f4;
}
100 {
background-color: #222;
}
}
是否可以使用 kivy 做这样的事情?
您可以使用 kivy.Animation
设置背景颜色的动画:
from kivy.animation import Animation
from kivy.app import App
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.uix.widget import Widget
class Pulser(Widget):
bg_color = ObjectProperty([1, 1, 1, 1])
def __init__(self, **kwargs):
super(Pulser, self).__init__(**kwargs)
Clock.schedule_once(self.start_pulsing, 2)
def start_pulsing(self, *args):
anim = Animation(bg_color=[1,0,0,1]) + Animation(bg_color=[1,1,1,1])
anim.repeat = True
anim.start(self)
theRoot = Builder.load_string('''
Pulser:
canvas:
Color:
rgba: self.bg_color
Rectangle:
pos: self.pos
size: self.size
''')
class PulserApp(App):
def build(self):
return theRoot
if __name__ == "__main__":
PulserApp().run()