Kivy 简明教程

Kivy - Color Picker

Kivy 的 ColorPicker 窗口小部件是一个内置对话框,它允许您通过多种方式选择颜色。它提供了一个色谱色轮,您可以从中选择所需的颜色。它还提供滑块控件,您可以调整它以获得所需的色值。还提供了 HSV 方案中透明度和色值的滑块。

每个这些颜色属性都包含一个文本框,您可以在其中直接输入介于 0 和 255 之间的数字色值。

ColorPicker 窗口小部件如下所示 −

kivy color wheel

ColorPicker 类在“kivy.uix.colorpicker”模块中定义。

from kivy.uix.colorpicker import ColorPicker
colour = ColorPicker(**kwargs)

若要呈现上述颜色对话框,只需将 ColorPicker 对象添加到父窗口中。如果它的 color 属性已绑定到事件处理程序,则可以将 color 值用于进一步处理,例如使用所选颜色更改某个对象的颜色。

除了 color 之外, ColorPicker 对象还有 hsv 和 hex_color 属性。在以下代码段中,当选择一种颜色时,color、hsv 和 hex_color 值会打印在控制台上。

对于从颜色盘中选择的颜色,RGB、HSV、A 和十六进制值都将显示在文本框中,并由滑块位置指示。

kivy color picker

回调方法在控制台上打印以下值:

RGBA = [1, 0.5, 0.5, 1]
HSV = (0.0, 0.5, 1)
HEX = #ff7f7fff

ColorPicker Properties

  1. r - 当前已选颜色的红色值。它是 BoundedNumericProperty,可以是 0 到 1 之间的值。其默认值是 0。

  2. g - 当前已选颜色的绿色值。“g”是 BoundedNumericProperty,可以是 0 到 1 之间的值。

  3. b - 当前已选颜色的蓝色值。“b”是 BoundedNumericProperty,可以是 0 到 1 之间的值。

  4. a - 当前已选颜色的 Alpha 值。“a”是 BoundedNumericProperty,可以是 0 到 1 之间的值。

  5. hsv - hsv 以 hsv 格式保存当前所选颜色。hsv 是 ListProperty,其默认值为 (1, 1, 1)。

  6. hex_color - hex_color 以十六进制保存当前所选颜色。hex_color 是 AliasProperty,其默认值为 #ffffffff。

  7. color - color 以 rgba 格式保存当前所选颜色。color 是 ListProperty,其默认值为 (1, 1, 1, 1)。

  8. font_name - 指定 ColorPicker 中使用的字体。font_name 是 StringProperty。

  9. wheel - wheel 保存色环。wheel 是 ObjectProperty,其默认值为 None。

Example

让我们使用 ColorPicker 窗口小部件选择所需的任意颜色,无论是从颜色盘、滑块还是通过直接输入颜色值,然后将其应用到父窗口上的标签。

Kivy 应用程序窗口包含放置在网格布局中的一个标签和一个按钮。在按钮的 on_press 事件中显示一个弹出窗口。

弹出窗口使用另一个网格布局中的 ColorPicker 和一个按钮设计而成。弹出窗口按钮在关闭弹出窗口之前将所选颜色应用到应用程序窗口上的标签。

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.popup import Popup
from kivy.uix.colorpicker import ColorPicker
from kivy.core.window import Window

Window.size = (720, 350)

class ColorPickApp(App):
   def build(self):
      self.layout = GridLayout(cols=1, padding=10)
      self.l1 = Label(
         text='www.tutorialspoint.com',
         font_size=32, color=[.8, .6, .4, 1]
      )
      self.layout.add_widget(self.l1)
      self.button = Button(text="Click Here")
      self.layout.add_widget(self.button)
      self.button.bind(on_press=self.onButtonPress)
      return self.layout

   def onButtonPress(self, button):
      layout = GridLayout(cols=1, padding=10)

      self.clr = ColorPicker()
      closeButton = Button(text="OK", size_hint=(.1, .05))

      layout.add_widget(self.clr)
      layout.add_widget(closeButton)

      self.popup = Popup(
         title='Hello', content=layout, auto_dismiss=False
      )
      self.popup.open()

      closeButton.bind(on_press=self.on_close)
   def on_close(self, event):
      self.l1.color = self.clr.hex_color
      self.popup.dismiss()

ColorPickApp().run()

Output

此 Kivy 应用的初始显示将显示一个标签和一个按钮。单击该按钮时,ColorPicker 窗口小部件会弹出。

选择所需颜色并按确定。您将看到 Label 文本相应地更改颜色。

kivy color picker select