是否可以完全自定义 Kivy
slider ?具体来说,如何更改 slider 背景颜色、添加 slider “填充”颜色以及自定义旋钮图像/颜色?
最佳答案
整个星期我都在为 Kivy
风格定制而苦苦挣扎,所以我决定在这里为其他人发布这个问题/答案。事实证明,您需要为 Slider
重写 Kivy
样式类。
使用 Kivy
's GitHub repo 中的默认样式表,我找到了默认样式的 Slider
类。然后,我在 Slider
类下创建了 canvas
child 的 Color
和 BorderImage
child ,复制现有的 child 开始和。请记住,Color
应用于下一个子项,因此如果您要完全修改 Slider
,则 canvas
下总共需要 5 个子项。此外,我还必须修改 BorderImage
的 size
属性,以便它在您移动 knob
时动态变化。
如果您只是对添加“填充”颜色感兴趣,这是我的代码:
from kivy.lang import Builder
Builder.load_string('''
<Slider>:
canvas:
Color:
rgb: 0, 0, 0
BorderImage:
border: (0, 18, 0, 18) if self.orientation == 'horizontal' else (18,
0, 18, 0)
pos: (self.x + self.padding, self.center_y - sp(18)) if self.orienta
tion == 'horizontal' else (self.center_x - 18, self.y + self.padding)
size: (max(self.value_pos[0] - self.padding * 2 - sp(16), 0), sp(36)
) if self.orientation == 'horizontal' else (sp(36), max(self.value_pos[1] - self
.padding * 2 - sp(16), 0))
source: 'atlas://data/images/defaulttheme/slider{}_background{}'.format(self.orientation[0], '_disabled' if self.disabled else '')
''')
当然,您可以轻松地将字符串移动到 .kv
文件中。如果您需要其他两个自定义的示例,请告诉我,但它们可以类似地完成。
关于python - 更改 Kivy slider 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33761286/