我可以在 python/kivy 中的 background_color 参数内使用 HSV 颜色吗?
Can I use HSV colors inside a background_color parameter in python/kivy?
我想使用 HSV 定义一些小部件颜色,我可以轻松地在 'Color' 模块中完成,如:
Color((1, 0, 0), mode = 'hsv')
但我的问题是,有时您想要更快、更具体,那么有没有一种方法可以使用 background_color 参数实现相同或相似的效果?
几乎不用说我已经尝试过但失败了:
my_hsv_color = Color((0.5, 1, 0.6), mode='hsv')
my_button = Button(background_color = my_hsv_color)
Color
是一个 class 或更好地说,你传递给 background_color
的东西是 Color
(对象)的一个实例。 background_color
需要 list/tuple 或其他可迭代的东西。
Color
即 class 具有这样的属性 right here 并且由于 Kivy 在 0.0 - 1.0
的间隔内使用 rgba,您需要将 属性 与rgb
或 rgba
.
from kivy.lang import Builder
from kivy.base import runTouchApp
from kivy.uix.boxlayout import BoxLayout
Builder.load_string('''
#:import Color kivy.graphics.Color
<Test>:
Button:
background_color: tuple(Color(0.5, 1, 0.6, mode='hsv').rgba)
''')
class Test(BoxLayout): pass
runTouchApp(Test())
我什至认为你可以在 Python 3:
中使用这种解包
background_color: *Color(0.5, 1, 0.6, mode='hsv').rgba
使用上面的 KeyWeeUsr 答案,我想出了在 background_color 参数 (Python 2.7) 中使用 HSV 的两个简单解决方案:
加长版:
with self.canvas:
Rectangle(size = (250,250), background_color = tuple(Color(1,1,1, mode='hsv').rgba))
或者用一个简单的函数:
def HSVtoRGB(color1,color2,color3):
from kivy.graphics import Color
return tuple(Color(color1, color2, color3, mode='hsv').rgba)
这样使用它:
with self.canvas:
Ellipse(size = (250,250), background_color = HSVtoRGB(0.5,0.7,1)
我想使用 HSV 定义一些小部件颜色,我可以轻松地在 'Color' 模块中完成,如:
Color((1, 0, 0), mode = 'hsv')
但我的问题是,有时您想要更快、更具体,那么有没有一种方法可以使用 background_color 参数实现相同或相似的效果? 几乎不用说我已经尝试过但失败了:
my_hsv_color = Color((0.5, 1, 0.6), mode='hsv')
my_button = Button(background_color = my_hsv_color)
Color
是一个 class 或更好地说,你传递给 background_color
的东西是 Color
(对象)的一个实例。 background_color
需要 list/tuple 或其他可迭代的东西。
Color
即 class 具有这样的属性 right here 并且由于 Kivy 在 0.0 - 1.0
的间隔内使用 rgba,您需要将 属性 与rgb
或 rgba
.
from kivy.lang import Builder
from kivy.base import runTouchApp
from kivy.uix.boxlayout import BoxLayout
Builder.load_string('''
#:import Color kivy.graphics.Color
<Test>:
Button:
background_color: tuple(Color(0.5, 1, 0.6, mode='hsv').rgba)
''')
class Test(BoxLayout): pass
runTouchApp(Test())
我什至认为你可以在 Python 3:
中使用这种解包background_color: *Color(0.5, 1, 0.6, mode='hsv').rgba
使用上面的 KeyWeeUsr 答案,我想出了在 background_color 参数 (Python 2.7) 中使用 HSV 的两个简单解决方案:
加长版:
with self.canvas:
Rectangle(size = (250,250), background_color = tuple(Color(1,1,1, mode='hsv').rgba))
或者用一个简单的函数:
def HSVtoRGB(color1,color2,color3):
from kivy.graphics import Color
return tuple(Color(color1, color2, color3, mode='hsv').rgba)
这样使用它:
with self.canvas:
Ellipse(size = (250,250), background_color = HSVtoRGB(0.5,0.7,1)