我想通过打发时间来更改文本颜色。 我使用Python和kivy。 这是我的代码。在此代码中,只有标签出现。
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.clock import Clock
import random
class MyLabel(Label):
def callback(self, *arg):
self.evt = Clock.schedule_interval(self.callback, 1)
def on_value(self, *arg):
self.parent.lbl.color = random.choice(['red','blue','black'])
class MyApp(App):
def build(self):
layout=BoxLayout()
layout.lbl = Label(text='NESIA')
layout.add_widget(layout.lbl)
return layout
MyApp().run()
`
答案 0 :(得分:1)
您永远不会调用您定义的on_value()
方法。您可以做的是在构建应用程序时使用Clock.schedule_interval()
,并传入改变标签颜色和间隔的调用方法,如下所示:
from kivy.app import App
from kivy.uix.label import Label
from kivy.clock import Clock
from kivy.uix.boxlayout import BoxLayout
import random
class MyLabel(Label):
def change_color(self, *args):
r, g, b = random.choice([[1, 0, 0],[0,0,1],[ 1, 1, 1]])
self.color = [r, g, b, 1]
class MyApp(App):
def build(self):
layout = BoxLayout()
label = MyLabel(text='NESIA')
Clock.schedule_interval(label.change_color, 1)
layout.add_widget(label)
return layout
MyApp().run()
这是假设您想要的是一个带有文本NESIA
的标签,其颜色每秒随机设置为红色,蓝色或黑色。请注意,random.choice()
可能连续两次返回相同的颜色,这意味着不管发生多少秒,它都不会改变。