我想扩展一个Kivy设置面板,为我的应用选择某些线条/背景等颜色。
我已将ColorPicker的新类型添加到Kivy设置面板,它几乎正常工作。但我有一个问题,即当前拾取的颜色的值不会显示在设置面板中。 (缺少文字见下面的红色圆圈截图)
我认为这是一个简单的问题,但我还没有找到解决办法。我的类具有名称SettingColorPicker(基类SettingItem),如果我将其重命名为SettingString并删除原始的SettingString类,而不是按预期工作。我不知道为什么?!
我注册了这样的新类型:
s = Settings()
s.register_type('colorpicker', SettingColorPicker)
我的其余代码与Class SettingPath代码相似。我只创建了一个颜色选择器而不是FileChooser。
这个位置的标签在哪里获得它的价值?我还没在源代码https://github.com/kivy/kivy/blob/master/kivy/uix/settings.py
中找到它我还希望将该标签中文字的颜色更改为当前选定的颜色。我怎样才能做到这一点?但如果我在创建标签的地方进行解读,那可能很容易。
以下是我点击文字' BG颜色' (它是Kivy中包含的ColorPicker):
您可以在此处找到源代码: https://gist.github.com/AWolf81/421976e65099d3e58a32
您可以直接运行它以查看所描述的问题。
答案 0 :(得分:4)
好的,正如预期的那样,修复非常简单。
我在Kivy文件中搜索了SettingString,我在C:\ Kivy-1.8.0-py2.7-win32 \ kivy \ kivy \ data \ style.kv中找到了一个kv文件:
731: <SettingString>:
732: Label:
733: text: root.value or ''
这就是为什么它适用于重命名的类名。只是新类型缺少KV定义。
添加以下行可解决问题:
from kivy.lang import Builder
Builder.load_string(
'''
<SettingColorPicker>:
Label:
text: root.value or ''
''')
我将这些行添加到我创建了Class SettingColorPicker的文件中。您可以将它添加到&#39; style.kv&#39;直接归档。这也应该有用,但我还没有测试过。
着色也很简单,只需使用root.value作为标签颜色即可。请注意,您必须使用kivy.utils.get_color_from_hex(root.value)将其转换为rgba元组。