gpt4 book ai didi

python - Qt - 格式化要在样式表中使用的 QColor?

转载 作者:太空狗 更新时间:2023-10-30 00:08:11 25 4
gpt4 key购买 nike

在我的 PyQt4 程序中,我通过 QColorDialog 从用户那里检索了一个 QColor。
然后,我需要格式化此 QColor 以在样式表中使用,我目前通过调用...

QColor.name()

... 它会返回类似“#00ff00”的内容,然后会进行简单的字符串操作以将其设置为小部件的样式表。例如:

QWidget.setStyleSheet( '* { background-color: '+ QColor.name() + ' }')

稍后在程序中,必须获取小部件的背景颜色(使用 .styleSheet() 和更简单的字符串操作)并将其转换为字符串,该字符串在 eval()ed 时将构造相同颜色的 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
- Windows 7

最佳答案

尝试 QColor.setNamedColor(name)

例子:

string_with_color = '#00ff00'  # gathered somehow

color = QtGui.QColor(0, 0, 0)
color.setNamedColor(string_with_color)

but I don't understand what 'ff' means

ff = 十六进制为 255

编辑

如评论所示,解决方案是将 Python 字符串转换为 QString

EvalString = "QtGui.QColor(QtCore.QString(" + ColorString +"))"

关于python - Qt - 格式化要在样式表中使用的 QColor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com