Kivy 教程

Kivy 主页

Kivy 基础知识

Kivy 入门 Kivy 下载安装和环境配置 Kivy 架构 Kivy 文件语法 Kivy 应用程序 Kivy Hello World Kivy 应用生命周期 Kivy 事件 Kivy 属性 Kivy 输入 Kivy 行为

Kivy 按钮

Kivy 按钮 Kivy 按钮事件 Kivy 按钮颜色 Kivy 按钮大小 Kivy 按钮位置 Kivy 圆形按钮 Kivy 禁用按钮 Kivy 图片按钮

Kivy 小部件

Kivy -小部件 Kivy 标签 Kivy 文本输入 Kivy 画布 Kivy 线条 Kivy 复选框 Kivy 下拉列表 Kivy 窗口 Kivy ScrollView Kivy 轮播 Kivy 滑块 Kivy 图像 Kivy 弹出窗口 Kivy 开关 Kivy 旋转器 Kivy 拆分器 Kivy 进度条 Kivy 气泡 Kivy 选项卡式面板 Kivy 散点图 Kivy 手风琴 Kivy 文件选择器 Kivy 颜色选择器 Kivy 代码输入 Kivy 模态视图 Kivy 切换按钮 Kivy 相机 Kivy 树形视图 Kivy reStructuredText Kivy 操作栏 Kivy 视频播放器 Kivy 模板视图 Kivy VKeyboard Kivy 触摸涟漪 Kivy 音频 Kivy 视频 Kivy 拼写 Kivy 效果 Kivy 输入记录器 Kivy OpenGL Kivy 文本 Kivy 文本标记 Kivy 设置

Kivy 布局

Kivy 布局 Kivy 浮动布局 Kivy 网格布局 Kivy 框布局 Kivy 堆栈布局 Kivy 锚点布局 Kivy 相对布局 Kivy 页面布局 Kivy 循环布局 Kivy 布局中的布局

Kivy 高级概念

Kivy 配置对象 Kivy Atlas Kivy 数据加载器 Kivy 缓存管理器 Kivy 控制台 Kivy 动画 Kivy MultiStroke Kivy 时钟 Kivy SVG Kivy UrlRequest Kivy 剪贴板 Kivy 工厂 Kivy 手势 Kivy 语言 Kivy 图形 Kivy 绘图 Kivy 打包 Kivy Garden Kivy 存储 Kivy 矢量 Kivy Utils Kivy Inspector 工具 Kivy 工具 Kivy 日志 Kivy 帧缓冲区

Kivy 应用程序和项目

Kivy 绘图应用程序 Kivy 计算器应用程序 Kivy 秒表应用程序 Kivy 相机处理 Kivy 图像查看器 Kivy 贝塞尔曲线 Kivy 画布应力 Kivy 圆形绘制 Kivy 小部件动画 Kivy 杂项

Kivy - 滑块

在 Kivy 框架中,当您想要设置连续可变数字属性的值时,滑块小部件是一个非常有用的控件。例如,电视屏幕或移动设备的亮度或扬声器声音。

滑块小部件的外观是水平或垂直条,上面有一个旋钮可以滑动以设置值。当旋钮位于水平滑块的左侧时,它对应于最小值;当滑块位于最右侧时,对应的是最大值。

Slider 类在"kivy.uix.slider"类中定义。

from kivy.uix.slider import Slider slider = Slider(**kwargs)

要在 Kivy 中创建一个基本的滑块控件,我们可以使用以下代码 −

from kivy.uix.slider import Slider
s = Slider(min=0, max=100, value=25)

滑块控件的默认方向是水平的。如果需要,请设置 orientation='vertical'。您应该在 Kivy 应用程序窗口中看到如下所示的滑块。

Kivy Slider

可以使用鼠标或触摸(如果是触摸屏)沿滑块移动旋钮。

要根据滑块值的变化调用某个操作,请将值属性绑定到某个回调。

def on_value_changed(self, instance, val):
   print (val)
   
s.bind(value = on_value_changed)

以下是 Slider 类 − 的一些重要属性

  • max − value 允许的最大值。max 是 NumericProperty,默认为 100。

  • min − value 允许的最小值。min 是 NumericProperty,默认为 0。

  • orientation − 滑块的方向。orientation 是 OptionProperty,默认为"horizo​​ntal"。可以采用"vertical"或"horizo​​ntal"的值。

  • padding − 滑块的填充。填充用于图形表示和交互。它可以防止光标超出滑块边界框的边界。 padding 是一个 NumericProperty,默认为 16sp。

  • range − 滑块的范围,格式为 (最小值,最大值),是 (最小值,最大值) 属性的 ReferenceListProperty。

  • sensitivity − 触摸是与整个小部件主体碰撞,还是仅与滑块手柄部分碰撞。sensitivity 是一个 OptionProperty,默认为"全部"。可以采用"全部"或"手柄"的值。

  • step − 滑块的步长。确定滑块在最​​小值和最大值之间所采用的每个间隔或步骤的大小。step 是一个 NumericProperty,默认为 0。

  • value − 滑块使用的当前值。 value 是一个 NumericProperty,默认为 0。

  • value_track − 决定滑块是否应绘制指示 min 和 value 属性值之间空间的线。它是一个 BooleanProperty,默认为 False。

  • value_track_color − rgba 格式的 value_line 颜色。value_track_color 是一个 ColorProperty,默认为 [1, 1, 1, 1]。

  • value_track_width − 轨道线的宽度,默认为 3dp。

示例

在下面的代码中,我们使用三个滑块小部件让用户设置所需颜色的 RGB 值。滑块的值用于更改 RGB 值。例如,红色滑块变化设置"r"组件的值 −

def on_red(self, instance, val):
   self.r = int(val)/255
   self.colour=[self.r, self.g, self.b, self.t]
   self.redValue.text = str(int(val))

还对绿色和蓝色的类似回调进行了编码。这些回调被分配了 colorProperty 类型的 colur 变量的值。它绑定到 Label 小部件的颜色属性。

colour = ColorProperty([1,0,0,1])

def on_colour_change(self, instance, value):
	self.ttl.color=self.colour

因此,通过滑块设置 RGB 值会更改 Label 的文本颜色。

三个滑块控件以及所需的标签放置在具有四列的内部网格布局中。上部网格有一列,其中有一个标签,其颜色随着滑块的移动而改变。

下面给出了完整代码−

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.slider import Slider
from kivy.uix.label import Label
from kivy.properties import ColorProperty, NumericProperty
from kivy.core.window import Window

Window.size = (720, 400)

class SliderExample(App):
   r = NumericProperty(0)
   g = NumericProperty(0)
   b = NumericProperty(0)
   t = NumericProperty(1)
   colour = ColorProperty([1, 0, 0, 1])

   def on_colour_change(self, instance, value):
      self.ttl.color = self.colour

   def on_red(self, instance, val):
      self.r = int(val) / 255
      self.colour = [self.r, self.g, self.b, self.t]
      self.redValue.text = str(int(val))
   
   def on_green(self, instance, val):
      self.g = int(val) / 255
      self.colour = [self.r, self.g, self.b, self.t]
      self.greenValue.text = str(int(val))
   
   def on_blue(self, instance, val):   
      self.b = int(val) / 255
      self.colour = [self.r, self.g, self.b, self.t]
      self.blueValue.text = str(int(val))
   
   def build(self):
      maingrid = GridLayout(cols=1)
      self.ttl = Label(
         text='Slider Example',
         color=self.colour, font_size=32
      )
      maingrid.add_widget(self.ttl)
      grid = GridLayout(cols=4)
      self.red = Slider(min=0, max=255)
      self.green = Slider(min=0, max=255)
      self.blue = Slider(min=0, max=255)
      grid.add_widget(Label(text='RED'))
      grid.add_widget(self.red)
      grid.add_widget(Label(text='Slider Value'))
      self.redValue = Label(text='0')
      grid.add_widget(self.redValue)
      self.red.bind(value=self.on_red)
      
      grid.add_widget(Label(text='GREEN'))
      grid.add_widget(self.green)
      grid.add_widget(Label(text='Slider Value'))
      self.greenValue = Label(text='0')
      grid.add_widget(self.greenValue)
      self.green.bind(value=self.on_green)
      
      grid.add_widget(Label(text='BLUE'))
      grid.add_widget(self.blue)
      grid.add_widget(Label(text='Slider Value'))
      self.blueValue = Label(text='0')
      grid.add_widget(self.blueValue)
      self.blue.bind(value=self.on_blue)
      self.bind(colour=self.on_colour_change)
      maingrid.add_widget(grid)
      return maingrid

root = SliderExample()
root.run()

输出

当您运行此代码时,它将产生一个输出窗口,如下所示−

Kivy 滑块移动