В моей программе PyQt4 я получаю QColor от пользователя через QColorDialog.
Затем мне нужно отформатировать этот QColor для использования в таблице стилей, чего я в настоящее время достигаю, вызывая ...
QColor.name()
... который возвращает что-то вроде '# 00ff00', которое затем подвергается простой манипуляции со строками для установки в качестве таблицы стилей для виджета.Например:
QWidget.setStyleSheet( '* { background-color: '+ QColor.name() + ' }')
Позже в программе должен быть выбран цвет фона виджета (с использованием .styleSheet () и более простых манипуляций со строками) и преобразован в строку, которая, когда eval () ed, будетсоздайте QColor идентичного цвета.
Он должен быть преобразован в QColor, так как он позже используется в QBrush.QColor должен быть преобразован в однострочную строку , поскольку он записывается в файл и импортируется из указанного файла с помощью eval ().
(Строка, когда eval () ed должна передатьцвет для конструктора QColor , так как строка - только одна строка).
В конце мне нужно что-то похожее (хотя и невозможно таким образом), например:
ColorString = str( QtGui.QColorDialog.getColor().name() )
EvalString = "QtGui.QColor(" + ColorString +")"
Конечно, этот метод не работает, потому что конструктор QColor не принимает такой формат, как '# 00ff00', который является форматом, который предоставляет QColorDialog.name () и который принимает QWidget.setStyleSheet ().
Как я могу на самом деле добиться этого?
Есть ли в любом случае преобразовать строку типа '# 00ff00' в 3 целых числа, представляющих красный, зеленый и синий, которые затем можно было бы отправить конструктору QColor?
Спасибо!
Примечание:
Я понимаю, что такой формат '# 00ff00' включает в себя представление этих трех цветов, но я не понимаю, что означает 'ff', и вызываю .red () дляQColor невернуть целое число, предложенное в формате «# 00ff00».
Вероятно, очевидно, что я не понимаю цвета:)
Спецификации:
- PyQt4
- Python 2.7
- Windows 7