在基维的时钟上,我要更改标签颜色



我想通过打发时间来改变文本颜色。 我使用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()

'

你从不调用你定义的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()可能会连续两次返回相同的颜色,这意味着无论发生多少秒,它看起来都不会改变。

最新更新