• 《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——Slider滑块


    ​​​​​​章节知识点总揽

    4.6 Slider滑块

            4.6.1 使用方法

            在kivy中,Slider滑块有着调用方便、兼容性好、可定义强、滑动平稳等优点。在一些项目的设置中,常常要设置Slider滑块,以此来让用户实时接收反馈信息,选择一个最合适的配置。

            在.py文件内使用该滑块需要引入Slider类,通过Slider类生成一个滑块并设置相关样式,再通过add_widget()方法添加到布局中即可,关键代码如下:

    1. from kivy.uix.slider import Slider
    2. sl = Slider(min=0,max=100)
    3. self.add_widget(sl)

            新建main.py文件,具体代码如下:

    1. from kivy.app import App
    2. from kivy.uix.floatlayout import FloatLayout
    3. from kivy.uix.slider import Slider
    4. class SliderWidget(FloatLayout):
    5. def __init__(self,**kwargs):
    6. super().__init__(**kwargs)
    7. sl = Slider(min = 0,max = 100)
    8. self.add_widget(sl)
    9. class SliderApp(App):
    10. def build(self):
    11. return SliderWidget()
    12. if __name__ == '__main__':
    13. SliderApp().run()

            执行main.py文件,结果如下图 :

    d57356b34f004cefb8fd3fa0ab4d5f5d.png

            相比之下,在.kv文件内使用它就非常简单,无需引入即可使用,关键代码如下:

    1. Slider:
    2. min:0
    3. max:100

            修改main.py文件,删除布局部分,具体内容如下:

    1. from kivy.app import App
    2. from kivy.uix.floatlayout import FloatLayout
    3. from kivy.uix.slider import Slider
    4. class SliderWidget(FloatLayout):
    5. def __init__(self,**kwargs):
    6. super().__init__(**kwargs)
    7. class SliderApp(App):
    8. def build(self):
    9. return SliderWidget()
    10. if __name__ == '__main__':
    11. SliderApp().run()

            根据main.py文件中SliderApp()类,新建slider.kv文件,内容如下:

    1. <SliderWidget>:
    2. Slider:
    3. min:0
    4. max:100

            运行结果与之前一致。

    4.6.2 常用属性

            在Slider小部件中,除了上一节常用的min和max两个属性外,她还支持设置方向、范围、步长、颜色、当前值、轨迹等内容,关于Slider滑块的常用属性具体如下标:

    Slider常用属性

    属性说明
    orientation滑块的方向
    min允许的最小值,默认为0
    max允许的最大值,默认为100
    range滑块的范围,格式为(min,max)
    step滑块步长,默认为1
    value滑块使用的当前值,默认为0
    value_normalizedvalue/max标准化值,必须为0-1之间
    value_pos内部光标的位置,基于标准化值
    value_track滑块是否现实轨迹
    value_track_color滑块轨迹显示的颜色,格式为:rgba,默认为[1,1,1,1]
    value_track_width滑块的轨迹宽度,默认为3sp
    background_width滑块的背景宽度,用于水平和垂直方向,默认为36sp
    border_horizontal用于沿水平方向绘制滑块背景的边框,默认为[0,18,0,18]
    border_vertical用于沿垂直方向绘制滑块背景的边框,默认为[18,0,18,0]
    cursor_width光标图像的宽度,默认为32sp
    cursor_height光标图像的高度,默认为32sp
    cursor_size光标图像的大小
    padding滑块的填充,默认为16sp
    sensitivity点击小部件的整体,还是点击整个光标部分
    background_disabled_horizontal默认为“kivy\tools\theming\defaulttheme\sliderh_background_disabled.png”
    background_disabled_vertical在垂直方向上禁用滑块时的背景,默认为“sliderv_background_disabled.png”
    background_disabled_vertical在水平方向上使用滑块时的背景,默认为“sliderh_background.png”
    background_vertical在垂直方向上使用滑块时的背景,默认为“sliderv_background.png”
    cursor_disabled_image禁用滑块时光标图像使用的路径,默认为“slider_cursor_disabled.png”
    cursor_image光标图像使用的路径,默认为“slider_cursor.png”

            实例:设置Slider滑块的常用属性

            在main.py文件中使用BoxLayout布局加载slider.kv文件。在.kv文件中添加两个滑块,并为其设置前面Image图片的常用属性实例的部分属性(orientation、min、max等),具体代码如下:

            main.py文件内容:

    1. from kivy.app import App
    2. from kivy.uix.boxlayout import BoxLayout
    3. class SliderWidget(BoxLayout):
    4. def __init__(self,**kwargs):
    5. super().__init__(**kwargs)
    6. class SliderApp(App):
    7. def build(self):
    8. return SliderWidget()
    9. if __name__ == '__main__':
    10. SliderApp().run()

            slider.kv文件内容:

    1. <SliderWidget>:
    2. orientation:'vertical'
    3. Slider:
    4. min:0
    5. max:100
    6. Slider:
    7. id:slider_move
    8. orientation:'vertical'
    9. min:-100
    10. max:100
    11. step:10
    12. value_track:True
    13. value_track_color:[1,0,0,1]
    14. value:25
    15. pos:200,400

            执行main.py文件,结果如下图:

    79eac8bda5b3483cb966429981a81a63.png

    4.6.3 触发事件

            在Slider小部件中没有专属的触发事件,但可以使用Kivy提供的移动和触摸事件:

                    on_touch_down:在点击部件时触发

                    on_touch_up:在释放部件时触发

                    on_touch_move:移动时触发

            实例:设置Slider滑块的触发事件

            想要设置Slider滑块的触发事件,首先需要在slider.kv文件内添加上述的触发事件,并设置对应的回调方法(如果方法是在.py内,则使用“root.方法名称”即可),关键代码如下:        

    1. <SliderWidget>:
    2. Slider:
    3. min:0
    4. max:100
    5. on_touch_down:print('down')
    6. on_touch_up:print('up')
    7. on_touch_move:print('move')

            将关键代码加入slider.kv文件,如下:

    1. <SliderWidget>:
    2. orientation:'vertical'
    3. Slider:
    4. min:0
    5. max:100
    6. on_touch_down:print('down')
    7. on_touch_up:print('up')
    8. on_touch_move:print('move')
    9. Slider:
    10. id:slider_move
    11. orientation:'vertical'
    12. min:-100
    13. max:100
    14. step:10
    15. value_track:True
    16. value_track_color:[1,0,0,1]
    17. value:25
    18. pos:200,400

            执行main.py文件,结果如下图:

    633c0bbb4f7e40b185a3e57dd9e4b80d.png

    上一篇:简单UX部件——CheckBox复选框

    下一篇:简单UX部件——ProgressBar进度条

     

  • 相关阅读:
    LM小型可编程控制器软件(基于CoDeSys)笔记十七:pto脉冲功能块
    Vue太难啦!从入门到放弃day07——Vue前端工程化之Webpack
    情绪智力测试
    什么是CPU密集型、IO密集型?什么是多进程与线程和协程?并行与并发?
    [C++数据结构](23)哈希:位图,布隆过滤器,哈希切割
    【WFA】【WIFI6】HE-5.31.2_6G Fail
    js教程(12)——本地储存
    Go语言中的Panic和高阶Func详细教程案例
    hadoop集群中主节点的FsImage没自动更新,上传失败导致主NN FsImage没更新
    Python为Excel中每一个单元格计算其在多个文件中的平均值
  • 原文地址:https://blog.csdn.net/lstef/article/details/127669208