是否可以将Label
背景颜色设置为类似于下面的十六进制值
妖精?
#:import hex kivy.utils.get_color_from_hex
#:set gray_dark hex('#c2c2c2')
<Label@Label>
background_normal: ''
bcolor: gray_dark
canvas.before:
Color:
rgba: self.bcolor
Rectangle:
pos: self.pos
size: self.size
对我而言唯一有效的方法是将bcolor:
设置为rgba值。即使我可以将颜色定义为rgba但在顶部如下进行一次设置也可以:
#:import hex kivy.utils.get_color_from_hex
#:set gray_dark (0.752, 0.745, 0.745, 1)
<Label@Label>
background_normal: ''
bcolor: gray_dark
canvas.before:
Color:
rgba: self.bcolor
Rectangle:
pos: self.pos
size: self.size
两个代码都引发错误:
TypeError: 'NoneType' object is not iterable
这很明显,因为十六进制不是列表。
答案 0 :(得分:0)
遇到以下错误,因为在应用启动时,属性bcolor
的值为None
。
TypeError:“ NoneType”对象不可迭代
添加if...else
语句以检查None
的值。
canvas.before:
Color:
rgba: (0, 0, 0, 1) if self.bcolor is None else self.bcolor
以下示例说明了将hex()
直接分配给rgba
。
canvas.before:
Color:
rgba: hex('#c2c2c2')
Rectangle:
pos: self.pos
size: self.size
from kivy.base import runTouchApp
from kivy.lang import Builder
runTouchApp(Builder.load_string("""
#:import hex kivy.utils.get_color_from_hex
#:import sp kivy.metrics.sp
#:set gray_dark hex('#c2c2c2')
<Label@Label>
background_normal: ''
bcolor: gray_dark
color: (0, 0, 0, 1)
text: "set gray_dark hex('#c2c2c2')"
font_size: sp(30)
canvas.before:
Color:
rgba: (0, 0, 0, 1) if self.bcolor is None else self.bcolor
Rectangle:
pos: self.pos
size: self.size
Label:
"""))