На Kivy's Clock я хочу изменить цвет метки - PullRequest
0 голосов
/ 10 октября 2018

Я хочу изменить цвет текста с течением времени.Я использую 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()

`

1 Ответ

0 голосов
/ 11 октября 2018

Вы никогда не вызываете метод 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() может возвращать один и тот же цвет два раза подряд, а это означает, что он не изменится в течение скольких секунд, как это происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...