2016-12-05 101 views
1

我想用HSV定义一些小部件的颜色,我可以很容易地做到这一点“颜色”模块为:我可以在python/kivy的background_color参数中使用HSV颜色吗?

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) 

回答

0

Color是一类或更好的说,你传递给background_color事情是Color(对象)的一个实例。 background_color需要一个列表/元组或其他可迭代的东西。

Color即类具有这样的性质和right here自Kivy可与RGBA在0.0 - 1.0间隔,则需要将属性与rgbrgba饲料。

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 
+0

它的工作,谢谢。但是,使用你的代码,我遇到一个问题,每当我试图从.kv代码访问数据为: 'my_color的= my_color_holder.ids.my_color_holderkv.background_color' 的Kivy沿着打开.exe文件带有空白屏幕的.py文件,你知道如何解决它吗? – Mitrek

+0

我认为原因是在'.kv'文件中重新导入'Color',该文件已经被导入,但是我没有看到另一个窗口。如果你使用'stable'(1.9.1)版本,考虑更新到1.9.2。 – KeyWeeUsr

1

使用KeyWeeUsr回答上面我已经想出了这两个简单的解决方案在BACKGROUND_COLOR paramater使用HSV( Python 2.7版):

的扩展版本:

with self.canvas: 
     Rectangle(size = (250,250), background_color = tuple(Color(1,1,1, mode='hsv').rgba)) 

或者用一个简单的福nction:

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) 
相关问题