我想在跑步时改变画布的颜色。
画布的颜色应为:
len(inputtext)%3 == 0
len(inputtext)%3 == 1
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()
答案 0 :(得分:2)
这是一个解决方案:)只需添加一个定义标签颜色的属性(在kv中)。然后在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()