LINUX.ORG.RU

gtk.gdk.Color -> string


0

0

Может кто-нибудь знает, есть ли стандартная функция для трансляции в hex-строку? (Мечтательно) а вот если бы для стандартных цветов можно было бы узнать простое название (например, "yellow", "sky blue" и т.д.) - вообще была бы сказка.

anonymous

Есть. sprintf(). Можно. Честно говоря не в курсе - есть ли в Xlib такая функция (обратная - есть, вестимо), но можно самому распарсить "/usr/X11R6/lib/X11/rgb.txt".

drF_ckoff ★★
()
Ответ на: комментарий от drF_ckoff

gtk.gdk.Color разделяет цвета по каналам и хранит их раздельно. Функция для конвертации строчного значения цвета в формат gtk.gdk.Color есть, а вот обратной - я не нашёл и использую пока такую:

def gdk_color_to_hex (self, color):
return '#' + (hex (color.red) + '0')[2:4] + (hex (color.green) + '0')[2:4] + (hex (color.blue) + '0')[2:4]

>можно самому распарсить "/usr/X11R6/lib/X11/rgb.txt"

вот только не всегда он под рукой :) (я имею ввиду win)

спасибо за ответ :)

anonymous
()
Ответ на: комментарий от drF_ckoff

> "#%02x%02x%02x" % (a.red, a.green, a.blue)

а ведь правда :)

эхх, спасибо!

anonymous
()
Ответ на: комментарий от drF_ckoff

стоп!

>>> import gtk >>> c = gtk.gdk.color_parse ("red") >>> "#%02x%02x%02x" % (c.red, c.green, c.blue) '#ffff0000'

но это не красный цвет (красный - #ff0000); при конвертации используется не вся hex строка, а первая половина, но за идею спасибо :)

anonymous
()
Ответ на: комментарий от anonymous

блин. забыл, что у gdk "цвета" не байт а слово. привести к байту надо.
"#%02x%02x%02x" % (c.red / 256, c.green / 256, c.blue / 256)
соответственно.

drF_ckoff ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.