gpt4 book ai didi

python - 运行时用 Kivy 改变 Canvas 的颜色

转载 作者:行者123 更新时间:2023-12-01 03:20:41 25 4
gpt4 key购买 nike

我想在运行时改变 Canvas 的颜色。

Canvas 的颜色应该是:

  • 红色如果 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()

最佳答案

这是一个解决方案:) 只需添加一个定义标签颜色的属性(在 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()

关于python - 运行时用 Kivy 改变 Canvas 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41956377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com