python - 如何在kivy中自定义 slider

标签 python slider kivy

我想更改 kivy slider 的外观。到目前为止,我还没有找到任何更改滚动条和圆圈的属性。我认为它们是通过使用 Canvas 操作创建的。

我的愿景是通过在可移动的圆圈下方显示当前值来扩展 slider 。

有什么想法吗?

一些代码:

class templPowerSlider():
    kivy.lang.Builder.load_string('''
<templPowerSlider@BoxLayout>:
    sp: sp
    sl: sl
    val: val

    Spinner:
        id: sp
        values: ['mW', '%']
        text: '%'
        size_hint_x: 0.1
        on_text: root.onSel(*args)

    Slider:
        id: sl
        size_hint_x: 0.7

    TextInput:
        id: val
        size_hint_x: 0.2
        text: "%3.1f" % sl.value
        multiline: False
        on_text_validate: root.onTextEnter(*args)
''')

    def __init__(self, **kwargs):
        super(templPowerSlider, self).__init__(**kwargs) 
        pass

    def onSel(self, a, b):
        print ('aaa')

    def onTextEnter(self, a, b):
        print ('bb')

最佳答案

是的,Slider 的 UI 是在 Canvas 中创建的,并且没有任何属性可以修改显示。如果您愿意,您可以通过覆盖 kv 设计来更改 Slider 的显示方式:

<-MySlider@Slider>:
    ....

- 告诉 Kivy 忽略之前的规则并从头开始构建这个 MySlider 小部件。如果您只想对显示进行细微修改,可以从 style.kv 复制旧规则。

但是,如果您想添加值文本,则不一定需要修改现有 UI。这是我想出的一个简单的例子:

<MySlide@Slider>:
    Label:
        pos: (root.value_pos[0] - sp(16), root.center_y - sp(27)) if root.orientation == 'horizontal' else (root.center_x - sp(27), root.value_pos[1] - sp(16))
        size_hint: None, None
        size: sp(32), sp(32)
        text: str(root.value)

这只是在 Slider handle 下方添加一个 Label

关于python - 如何在kivy中自定义 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28302476/

相关文章:

python - Mac OS X - 环境错误 : mysql_config not found

python - 如何每次运行时只抓取更新的部分

jquery - 在 jQuery 中创建幻灯片效果

python - Kivy 毫不拖延地捕获触摸

python - 使用推文 ID 使用 tweepy 查找推文在几条推文后停止 - 用户暂停错误

python - 在 matplotlib 的 Canvas 上获取自定义图例

actionscript-3 - 如何在 as3 中为我的 mp3 播放器添加 2 个音量 slider

android - Android 中的 UISlider?

python - 将 Python 代码转换为适用于 Android 的 apk?

python - 使用外部 .kv 文件与内部处理?