python - 更改 Kivy slider 颜色

标签 python slider kivy

是否可以完全自定义 Kivy slider ?具体来说,如何更改 slider 背景颜色、添加 slider “填充”颜色以及自定义旋钮图像/颜色?

最佳答案

整个星期我都在为 Kivy 风格定制而苦苦挣扎,所以我决定在这里为其他人发布这个问题/答案。事实证明,您需要为 Slider 重写 Kivy 样式类。

使用 Kivy's GitHub repo 中的默认样式表,我找到了默认样式的 Slider 类。然后,我在 Slider 类下创建了 canvas child 的 ColorBorderImage child ,复制现有的 child 开始和。请记住,Color 应用于下一个子项,因此如果您要完全修改 Slider,则 canvas 下总共需要 5 个子项。此外,我还必须修改 BorderImagesize 属性,以便它在您移动 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/

相关文章:

android - Kivy VM Buildozer 命令失败

python - 同时运行多个相互通信的 Kivy 应用程序

python - 线程问题 使用线程时 Kivy 图像纹理不更新

python - 在绘图窗口中放置自定义图像 - 作为自定义数据标记或注释这些标记

python - Python中3D音频信号的平均RMS值

python - 从 Flask 蓝图访问数据库

javascript - 垂直滚动在行内的 div(col-md-6) 外部不起作用

python - 训练 pytorch RNN 时损失并没有减少

javascript - 如何使用音量 slider 控制轨道?

c# - WPF - 将图像绘制到 Canvas 上并反复删除和重绘