gtk3和x2B;和python rgba转换为十六进制

gtk3和x2B;和python rgba转换为十六进制,python,python-3.x,pygtk,gtk3,Python,Python 3.x,Pygtk,Gtk3,我使用gtk3发现它使用rgba表示颜色,但(红、绿、蓝、阿尔法)不是介于0-255之间的整数,而是介于0-1.0之间的浮点数,因此我不知道如何从rgba转换为十六进制,反之亦然 我尝试过此代码,但它似乎不起作用: def convert_to_hex(rgba_color) : red = str(hex(int(rgba_color.red*255)))[2:].capitalize() green = str(hex(int(rgba_color.green*255)))[2:].capi

我使用gtk3发现它使用rgba表示颜色,但(红、绿、蓝、阿尔法)不是介于0-255之间的整数,而是介于0-1.0之间的浮点数,因此我不知道如何从rgba转换为十六进制,反之亦然

我尝试过此代码,但它似乎不起作用:

def convert_to_hex(rgba_color) :
red = str(hex(int(rgba_color.red*255)))[2:].capitalize()
green = str(hex(int(rgba_color.green*255)))[2:].capitalize()
blue = str(hex(int(rgba_color.blue*255)))[2:].capitalize()

return '0x' + red + green + blue

假设问题是当数字只有1位时,数字应该有前导零。这里有一个解决方案

def convert_to_hex(rgba_color) :
    red = int(rgba_color.red*255)
    green = int(rgba_color.green*255)
    blue = int(rgba_color.blue*255)
    return '0x{r:02x}{g:02x}{b:02x}'.format(r=red,g=green,b=blue)

假设问题是当数字只有1位时,数字应该有前导零。这里有一个解决方案

def convert_to_hex(rgba_color) :
    red = int(rgba_color.red*255)
    green = int(rgba_color.green*255)
    blue = int(rgba_color.blue*255)
    return '0x{r:02x}{g:02x}{b:02x}'.format(r=red,g=green,b=blue)

“它似乎不起作用”-你能补充更多信息吗?您是否收到错误(提供完整的回溯)?您是否获得意外输出(提供输入以及预期和实际输出)?我收到一个很好的十六进制数,但当我在线尝试十六进制颜色时,它会给我另一种颜色,然后请提供输入和输出示例“它似乎不起作用”-您能添加更多信息吗?您是否收到错误(提供完整的回溯)?您是否获得意外输出(提供输入以及预期和实际输出)?我收到一个很好的十六进制数,但当我在线尝试十六进制颜色时,它会给我另一种颜色,然后请提供示例输入和输出仍然不工作,它会给我一个十六进制数,但当我在线尝试十六进制时,它会给另一种颜色它仍然不工作,它给了我一个十六进制数,但当我尝试十六进制在线它给另一种颜色