【发布时间】:2012-02-01 11:09:43
【问题描述】:
在我的 PyQt4 程序中,我通过 QColorDialog 从用户那里检索 QColor。
然后我需要格式化这个 QColor 以在样式表中使用,我目前通过调用...
QColor.name()
... 返回类似 '#00ff00' 的内容,然后将进行简单的字符串操作以设置为小部件的样式表。例如:
QWidget.setStyleSheet( '* { background-color: '+ QColor.name() + ' }')
稍后在程序中,必须获取小部件的背景颜色(使用 .styleSheet() 和更简单的字符串操作)并转换为字符串,当 eval() 执行时,该字符串将构造相同颜色的 QColor。
它必须转换为 QColor,因为它稍后会在 QBrush 中使用。 QColor 必须转换为单行字符串,因为它被写入文件,并通过 eval() 从所述文件导入。
(eval() 时的字符串必须将颜色传递给 QColor 构造函数,因为字符串只有一行)。
最后,我需要类似的东西(虽然不可能以这种方式):
ColorString = str( QtGui.QColorDialog.getColor().name() )
EvalString = "QtGui.QColor(" + ColorString +")"
当然,这个方法不起作用,因为 QColor 构造函数不接受像“#00ff00”这样的格式,这是 QColorDialog.name() 给出的格式,而 QWidget.setStyleSheet() 接受的格式。
我怎样才能真正做到这一点?
有没有办法将像 '#00ff00' 这样的字符串转换为 3 个表示红色、绿色和蓝色的整数,然后将其发送到 QColor 构造函数?
谢谢!
注意:
我意识到这种格式 '#00ff00' 确实涉及这三种颜色的表示,但我不明白 'ff' 的含义,并且在 QColor 上调用 .red() 不会返回由'#00ff00' 格式。
很明显我不懂颜色:)
规格:
- PyQt4
- Python 2.7
- 视窗 7
【问题讨论】:
标签: python qt colors stylesheet