【问题标题】:How Can I Animate a Label in Kivy?如何在 Kivy 中为标签设置动画?
【发布时间】:2021-10-25 07:01:35
【问题描述】:

好的,我的问题是这样的

这是我想要动画的Label。我可以编辑 cmets 中的代码吗?

实际上,我对这个脚本很着迷,绞尽脑汁想知道如何为这个东西制作动画!!请帮忙!..

import kivy
from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):
    def build(self):
        lu = Label(text = "This is a label! Pls help me with Animation!")
        return lu

if __name__ == '__main__':
    MyApp().run()

【问题讨论】:

  • 动画对你意味着什么?如果你想每隔几毫秒更新一次文本,那么你可以使用Clock 每隔几毫秒执行一次自己的函数,这个函数应该更新标签中的文本。

标签: python animation kivy label


【解决方案1】:

如果您想每隔几秒更新一次Label 上的文本,那么您可以使用ClockClock.schedule_interval(function_name, seconds) 来执行function_name(dt)seconds 并且在此函数中您应该更改Label 中的文本


显示当前时间的最小示例。

from kivy.app import App
from kivy.uix.label import Label
from kivy.clock import Clock
import datetime

def update_label(dt):
    new_text = datetime.datetime.now().strftime('%H:%M:%S') 
    label.text = new_text
    #print(new_text)
    
label = None  # create global variable to access the same `label` in two different functions 

class MyApp(App):
    def build(self):
        global label  # inform function to assign `Label` to global variable

        label = Label(text="???")
        Clock.schedule_interval(update_label, 1)

        return label

#Clock.schedule_interval(update_label, 1)

if __name__ == '__main__':
    MyApp().run()

编辑:

另一个滚动文本的例子

from kivy.app import App
from kivy.uix.label import Label
from kivy.clock import Clock
import datetime

label = None

text = 'Hello World of Python!'
text_length = len(text)

index = 0
temp_text = text + ' ' + text

def update_label(dt):
    global index
    
    label.text = temp_text[index:index+15]
    index += 1
    
    if index >= text_length:
        index = 0
    
class MyApp(App):
    def build(self):
        global label
        
        label = Label(text="???")
        Clock.schedule_interval(update_label, 0.20)
        
        return label

if __name__ == '__main__':
    MyApp().run()

编辑:

对于数值,您可以使用Animation

这里是闪烁的文字。

它将颜色变为black(在 0.2 秒内),然后又变回 white(在 0.2 秒内)。它会重复它。

from kivy.app import App
from kivy.uix.label import Label
from kivy.animation import Animation
    
class MyApp(App):
    def build(self):

        label = Label(text='Hello World of Python!')

        anim = Animation(color=(0, 0, 0, 1), duration=.2) + Animation(color=(1, 1, 1, 1), duration=.2)
        anim.repeat = True
                
        anim.start(label)
            
        return label

if __name__ == '__main__':
    MyApp().run()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2019-05-04
    • 2019-03-29
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    相关资源
    最近更新 更多