如何在 PyQt4 中选择性地设置文本的前景色
Posted
技术标签:
【中文标题】如何在 PyQt4 中选择性地设置文本的前景色【英文标题】:How can I set selectively set the foreground color of a text in PyQt4 【发布时间】:2014-01-03 14:49:07 【问题描述】:所以,我有一个QtGui.QTextEdit
,我想根据某些条件附加文本。例如:
resultbox = QtGui.QTextEdit()
text = 'example'
if condition1:
resultbox.append(text) '''Append text to resultbox in default color.'''
elif condition2:
resultbox.append(text) '''Append the text in say, red and not the default black. How?'''
我正在寻找类似QString(text)
上的setForegroundColor(QtColor)
方法,它可以让我设置文本的前景色。
我尝试通过为 QTextEdit
设置颜色来使用 PyQt4 中的 stylehseets,但这不允许我有选择地为文本着色,对吧?
有什么办法可以做到吗?
谢谢
【问题讨论】:
【参考方案1】:QTextEdit
可以处理常规的 html 内容,因此您可以使用以下方式来实现您的愿望:
resultbox = QtGui.QTextEdit()
text = 'example'
if condition1:
resultbox.insertText(text) '''Append text to resultbox in default color.'''
elif condition2:
resultbox.insertHtml(QString("<font color=\"red\">%1</font>").arg(text)) '''Append the text in say, red and not the default black. How?'''
【讨论】:
【参考方案2】:使用QTextEdit.textCursor
获取光标,然后使用QTextCursor.setCharFormat
设置格式。
resultbox = QtGui.QTextEdit()
text = 'example'
if condition1:
resultbox.append(text) '''Append text to resultbox in default color.'''
elif condition2:
resultbox.textCursor().setCharFormat(specialFormat)
resultbox.append(text) '''Append the text in say, red and not the default black. How?'''
resultbox.textCursor().setCharFormat(defaultFormat)
或者你可以使用QTextEdit.insertHtml
在文本中插入一些HTML代码,你可以通过style
属性指定颜色。
【讨论】:
为什么不直接使用 HTML? @rainer 你是对的。QTextEdit.setHtml
是一种更简单的方法。以上是关于如何在 PyQt4 中选择性地设置文本的前景色的主要内容,如果未能解决你的问题,请参考以下文章
如何允许在 PyQt4 中调整 QMessageBox 的大小
如何更改 MFC/VC++ 对话框应用程序中按钮的前景色(即文本或标题)