我找到了这段代码
gdk_rgba_parse ()
应该允许我做类似
的事情Gdk.RGBA.parse(#7F7F7F)
错误:
TypeError: unbound method parse() must be called with RGBA instance as first argument (got str instance instead)
使用RGBA颜色(百分比,从0到1)
文档:
https://developer.gnome.org/gdk3/stable/gdk3-RGBA-Colors.html#gdk-rgba-parse http://www.crategus.com/books/cl-cffi-gtk/pages/gdk_fun_gdk-rgba-parse.html
但我有点失落,我很难从C翻译成PyGOBject并理解函数的论点..任何帮助都将不胜感激!
由于我没有找到合适的解决方案,我制作了这个转换器:
def hex_to_rgba(value):
value = value.lstrip('#')
if len(value) == 3:
value = ''.join([v*2 for v in list(value)])
(r1,g1,b1,a1)=tuple(int(value[i:i+2], 16) for i in range(0, 6, 2))+(1,)
(r1,g1,b1,a1)=(r1/255.00000,g1/255.00000,b1/255.00000,a1)
return (r1,g1,b1,a1)
有效..
答案 0 :(得分:4)
该函数需要GdkRGBA结构的实例:
gboolean
gdk_rgba_parse (GdkRGBA *rgba,
const gchar *spec);
这转换为Python作为Gdk.RGBA实例上的方法,它改变了结构内容:
color = Gdk.RGBA()
color.parse('#7F7F7F')
color.to_string() # 'rgb(127,127,127)'
对于Python来说,它不是一个非常好的API,但每隔一段时间你就必须使用基于内省的绑定来处理这些事情。 lazka的文档应该比C语言更有帮助:
http://lazka.github.io/pgi-docs/#Gdk-3.0/structs/RGBA.html#Gdk.RGBA.parse