跑步时用Kivy改变画布颜色

2024-03-29 10:19:32 发布

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

我想在跑步时改变画布的颜色。在

画布的颜色应为:

  • 红色if len(inputtext)%3 == 0
  • 绿色if len(inputtext)%3 == 1
  • 蓝色if len(inputtext)%3 == 2

我不知道如何在下面的代码中编写color()方法:

kv ="""
RootWidget:
    orientation: 'vertical'

    TextInput:
        id: my_id
        text: 'text'
        on_text: root.color()

    Label:
        id: my_Label
        text: ' '
        canvas.before:
            Color:
                rgb: (1., 1., 0.)
            Rectangle:
                size: self.size
                pos: self.pos
"""

import kivy
kivy.require('1.8.0')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

class RootWidget(BoxLayout):

    def __init__(self):
        super().__init__()

    def color(self):
        pass  # <-- here

class TestApp(App):
    def build(self):
        return Builder.load_string(kv)

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

Tags: textfromimportselfidlenif颜色
1条回答
网友
1楼 · 发布于 2024-03-29 10:19:32

这里有一个解决方案:)只需添加一个属性来定义标签的颜色(以千伏为单位)。然后在color-方法中相应地设置这个属性。在

import kivy
kivy.require('1.8.0')

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout



kv = """
RootWidget:
    orientation: 'vertical'

    TextInput:
        id: my_id
        text: 'text'
        on_text: root.color(self.text)

    Label:
        id: my_Label
        col: (1., 1., 0.)
        text: ' '
        canvas.before:
            Color:
                rgb: self.col
            Rectangle:
                size: self.size
                pos: self.pos
"""

class RootWidget(BoxLayout):

    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def color(self, inputtext):
        if len(inputtext)%3 == 0:
            col = (1,0,0)
        elif len(inputtext)%3 == 1:
            col = (0,1,0)
        else:
            col = (0,0,1)
        self.ids.my_Label.col = col

class TestApp(App):
    def build(self):
        return Builder.load_string(kv)

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

相关问题 更多 >