KIVY:设置标签动画

2024-09-29 23:15:43 发布

您现在位置:Python中文网/ 问答频道 /正文

亲爱的

我试着用Kivy做一个非常简单的程序,它会在屏幕上随机移动一个标签(就像旧的屏幕保护程序一样)。你知道吗

想用时钟和随机键吗

我做错什么了?你知道吗

厚度

代码

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.clock import Clock
from kivy.properties import ListProperty
from kivy.core.window import Window
from random import random

Builder.load_string('''
<TransLabel>:
    Label :
        text: "test"
        pos: self.pos
        size: self.size
''')
class TransLabel(Label):
    velocity = ListProperty([10,15])

    def __init__(self, **kwargs):
        super(TransLabel,self).__init__(**kwargs)
        Clock.schedule_interval(self.update, 1/60.)

    def update(self,*args):
        self.x += self.velocity[0]
        self.y += self.velocity[1]

        if self.x <0 or (self.x + self.width) > Window.width:
            self.velocity[0] *= -1

        if self.y <0 or (self.y + self.height) > Window.height:
            self.velocity[1] *= -1

runTouchApp(TransLabel())

Tags: fromimportself程序屏幕builderrandomwindow
1条回答
网友
1楼 · 发布于 2024-09-29 23:15:43

包含文本的标签不应具有根的大小,因为在执行update()方法时,文本将振荡,因为计算if的语句将始终为true。你知道吗

您还必须比较文本相对于窗口的位置,而不是根与窗口的位置,因为它们的大小相同。你知道吗

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.clock import Clock
from kivy.properties import ListProperty, NumericProperty
from kivy.core.window import Window
from random import randint

Builder.load_string('''
<TransLabel>:
    Label :
        id: label
        text: "test"
''')

class TransLabel(Label):
    velocity = ListProperty([10,15])

    def __init__(self, **kwargs):
        super(TransLabel,self).__init__(**kwargs)
        Clock.schedule_interval(self.update, 1./60)
        self.x = randint(0, self.width)
        self.y = randint(0, self.height)

    def update(self,*args):
        self.x += self.velocity[0]
        self.y += self.velocity[1]

        label = self.ids.label

        if self.x <0 or (self.x + label.width) > Window.width:
            self.velocity[0] *= -1

        if self.y <0 or (self.y + label.height) > Window.height:
            self.velocity[1] *= -1 

        label.pos = [self.x, self.y]

runTouchApp(TransLabel())

相关问题 更多 >

    热门问题