Kivy中的脉冲背景颜色

3

我是kivy的新手,但我真的卡在这里了。有没有办法在画布上实现与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可以实现这样的功能吗?

当然可以。虽然不像CSS代码那么简单,但你肯定能做到。你可能需要设置一个函数以便每隔一段时间触发一次,这个函数会改变画布的颜色。要安排函数调用,请使用kivy.Clock.schedule_interval函数(https://kivy.org/doc/stable/api-kivy.clock.html)。如果你想先试试,请去做吧!如果你遇到困难,我可以发布一个小而完整的示例来帮助你。 - Erik
1个回答

4
您可以使用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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接