在我的PyQt4程序中,我通过QColorDialog从用户那里检索一个QColor。
然后,我需要格式化这个QColor以在样式表中使用,我现在通过调用.
QColor.name()..。它返回'#00ff00‘这样的内容,然后进行简单的字符串操作,将其设置为小部件的样式表。例:
QWidget.setStyleSheet( '* { background-color: '+ QColor.name() + ' }')在稍后的程序中,必须获取小部件的背景色(使用.styleSheet()和更简单的字符串操作),并将其转换为字符串,当eval()编辑时,该字符串将构造相同颜色的QColor。
它必须转换为QColor,因为它稍后在QBrush中使用。必须将QColor转换为单行字符串,因为它是写到文件中的,并通过eval()从该文件导入。
(()ed时的字符串必须将颜色传递给QColor构造函数,因为该字符串只有一行)。
最后,我需要类似的东西(虽然以这种方式不可能),比如:
ColorString = str( QtGui.QColorDialog.getColor().name() )
EvalString = "QtGui.QColor(" + ColorString +")"当然,这个方法不能工作,因为QColor构造函数不接受'#00ff00‘这样的格式,这是QColorDialog.name()给出的格式,QWidget.setStyleSheet()接受的格式。
我怎样才能真正做到这一点呢?
是否存在将'#00ff00‘这样的字符串转换为3个表示红色、绿色和蓝色的整数,然后将其发送给QColor构造函数?
谢谢!
注意:
我意识到这样的格式'#00ff00‘确实涉及这三种颜色的表示,但我不明白'ff’是什么意思,在QColor上调用QColor()并不返回‘00ff00’格式建议的整数。
很明显,我不懂颜色:)
规格:
发布于 2012-01-03 12:07:29
试试QColor.setNamedColor(姓名)
示例:
string_with_color = '#00ff00' # gathered somehow
color = QtGui.QColor(0, 0, 0)
color.setNamedColor(string_with_color)但我不明白'ff‘是什么意思
十六进制系统中的ff = 255
编辑
如注释所示,解决方案是将Python转换为QString。
EvalString = "QtGui.QColor(QtCore.QString(" + ColorString +"))"https://stackoverflow.com/questions/8711799
复制相似问题