Kivy 不使用 ColorPicker return 颜色值
Kivy doesn't return color value with ColorPicker
我在 Popup 中遇到了 ColorPicker 的问题。
按 'PICK AND CLOSE' 后我需要颜色值(不带 # 的十六进制代码)return,但我只打印了两次白色值。
在 运行 代码之后。
我的代码(Python 3.6,kivy 1.9.1):
from kivy.lang import Builder
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.colorpicker import ColorPicker
Builder.load_string('''
<PaintWindow>:
orientation: 'vertical'
<PopupColor>:
title: 'Pick a Color'
size_hint: 1.0, 0.6
id: popupcolor
BoxLayout:
orientation: 'vertical'
ColorPicker:
size_hint: 1.0, 1.0
Button:
text: 'PICK AND CLOSE'
color: 0.435, 0.725, 0.56, 1
background_color: 0, 0.26, 0.27, 1
size_hint: 1.0, 0.2
on_press: popupcolor.on_press_dismiss()
''')
class PaintWindow(BoxLayout):
pass
class PopupColor(Popup):
def on_press_dismiss(self, *args):
self.dismiss()
return False
class PopupRun(App):
def build(self):
main_window = PaintWindow()
popup = PopupColor()
popup_color = ColorPicker()
popup.open()
def on_color(instance, value):
print("RGBA = ", str(value))
print("HSV = ", str(instance.hsv))
print("HEX = ", str(instance.hex_color))
hex_color = str(instance.hex_color)
# Return hex color code without '#'
return hex_color[1:]
# Return valye after change color in ColorPicker
popup_color.bind(color=on_color)
return main_window
PopupRun().run()
您可以将 ColorPicker 传递给 dismiss 方法。
首先给你的 ColorPicker 一个 kv 中的 id:
ColorPicker:
id: colorpicker
size_hint: 1.0, 1.0
然后传给on_press方法:
Button:
text: 'PICK AND CLOSE'
color: 0.435, 0.725, 0.56, 1
background_color: 0, 0.26, 0.27, 1
size_hint: 1.0, 0.2
on_press: popupcolor.on_press_dismiss(colorpicker)
在python中:
class PopupColor(Popup):
def on_press_dismiss(self, colorpicker, *args):
self.dismiss()
color = str(colorpicker.hex_color)[1:]
print(color)
我在 Popup 中遇到了 ColorPicker 的问题。 按 'PICK AND CLOSE' 后我需要颜色值(不带 # 的十六进制代码)return,但我只打印了两次白色值。 在 运行 代码之后。
我的代码(Python 3.6,kivy 1.9.1):
from kivy.lang import Builder
from kivy.app import App
from kivy.uix.popup import Popup
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.colorpicker import ColorPicker
Builder.load_string('''
<PaintWindow>:
orientation: 'vertical'
<PopupColor>:
title: 'Pick a Color'
size_hint: 1.0, 0.6
id: popupcolor
BoxLayout:
orientation: 'vertical'
ColorPicker:
size_hint: 1.0, 1.0
Button:
text: 'PICK AND CLOSE'
color: 0.435, 0.725, 0.56, 1
background_color: 0, 0.26, 0.27, 1
size_hint: 1.0, 0.2
on_press: popupcolor.on_press_dismiss()
''')
class PaintWindow(BoxLayout):
pass
class PopupColor(Popup):
def on_press_dismiss(self, *args):
self.dismiss()
return False
class PopupRun(App):
def build(self):
main_window = PaintWindow()
popup = PopupColor()
popup_color = ColorPicker()
popup.open()
def on_color(instance, value):
print("RGBA = ", str(value))
print("HSV = ", str(instance.hsv))
print("HEX = ", str(instance.hex_color))
hex_color = str(instance.hex_color)
# Return hex color code without '#'
return hex_color[1:]
# Return valye after change color in ColorPicker
popup_color.bind(color=on_color)
return main_window
PopupRun().run()
您可以将 ColorPicker 传递给 dismiss 方法。
首先给你的 ColorPicker 一个 kv 中的 id:
ColorPicker:
id: colorpicker
size_hint: 1.0, 1.0
然后传给on_press方法:
Button:
text: 'PICK AND CLOSE'
color: 0.435, 0.725, 0.56, 1
background_color: 0, 0.26, 0.27, 1
size_hint: 1.0, 0.2
on_press: popupcolor.on_press_dismiss(colorpicker)
在python中:
class PopupColor(Popup):
def on_press_dismiss(self, colorpicker, *args):
self.dismiss()
color = str(colorpicker.hex_color)[1:]
print(color)