You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Kivy中点击添加Label并1秒后平滑消失

实现带平滑出现/消失效果的自动消失文本

要实现文本的平滑出现、1秒后自动平滑消失,我们可以借助Kivy的Animation类处理透明度动画,并用Clock.schedule_once来延迟消失动作。以下是修改后的完整代码:

修改后的 test1.py

from kivy.app import App
import random
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.animation import Animation
from kivy.clock import Clock

class ScreenOne(Screen):
    def on_press(self):
        x = random.randint(-250, 300)
        y = random.randint(-250, 300)

        Bl = self.ids.Fl
        # 初始透明度设为0,让文本一开始不可见
        label = Label(text="+", font_size=30, pos=(x, y), opacity=0)
        Bl.add_widget(label)

        # 平滑淡入动画:0.2秒内将透明度从0变为1
        fade_in = Animation(opacity=1, duration=0.2)
        fade_in.start(label)

        # 1秒后执行淡出并移除文本的操作
        Clock.schedule_once(lambda dt: self.fade_out_and_remove(label), 1)

    def fade_out_and_remove(self, label):
        # 平滑淡出动画:0.2秒内将透明度从1变为0
        fade_out = Animation(opacity=0, duration=0.2)
        # 动画结束后移除该文本控件
        fade_out.bind(on_complete=lambda anim, widget: widget.parent.remove_widget(widget))
        fade_out.start(label)

class manager(ScreenManager):
    pass

kv = Builder.load_file("test1.kv")
class test(App):
   def build(self):
       return kv

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

test1.kv 保持原内容不变

manager:
    ScreenOne:

<ScreenOne>
    name: "ScreenOne"
    FloatLayout:
        id: Fl
        size: root.width, root.height
        Button:
            size_hint: .2, .2
            pos: self.width * 2, self.height * 2
            text: "press ME"
            on_release: root.on_press()

关键实现说明

  • 初始透明度设置:创建Label时将opacity设为0,确保文本一开始不显示。
  • 淡入动画:用Animation将透明度在0.2秒内从0过渡到1,实现平滑出现效果。
  • 延迟消失:通过Clock.schedule_once在1秒后触发淡出操作。
  • 淡出并移除:淡出动画结束后,绑定on_complete事件将Label从布局中移除,避免不必要的内存占用。

内容的提问来源于stack exchange,提问作者SerJo Kyzin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 00:53:20