Kivy Canvas颜色值设置报错求助:运行代码触发异常
解决Kivy中Color rgba赋值的异常问题
我一眼就看出问题啦——你把颜色通道的值都存成字符串类型了,但Kivy的Color指令里的rgba参数需要的是浮点数值(float),不是字符串,这就是触发异常的根源。
咱们来理一理:你定义的self.a1到self.a4都是带引号的字符串,比如"0.5",但Kivy在解析rgba: self.my_colors的时候,会期望拿到四个0到1之间的数值,字符串类型根本没法被正确解析成颜色值,自然就报错了。
直接上修正后的代码,把字符串改成浮点数值就行:
from kivy.app import App from kivy.lang import Builder kv = """ BoxLayout: orientation: "vertical" my_colors: app.a1, app.a2, app.a3, app.a4 canvas.before: Color: rgba: self.my_colors Rectangle: pos: self.pos size: self.size """ class d(App): def build(self): # 把字符串改成浮点数值,去掉引号 self.a1 = 0.5 self.a2 = 0.7 self.a3 = 0.222222 self.a4 = 0.3456 return Builder.load_string(kv) d().run()
另外再提个小建议:如果之后需要从字符串转成数值的话,可以用float()函数,比如self.a1 = float("0.5"),这样在处理动态输入的颜色值时也能正常工作。
内容的提问来源于stack exchange,提问作者Cihat Altıparmak
相关产品推荐
相关产品推荐

