如何在PyQt4中有选择地设置文本的前景色

时间:2014-01-03 14:49:07

标签: python qt python-2.7 pyqt4 qtextedit

所以,我有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?'''

我在setForegroundColor(QtColor)上寻找类似QString(text)方法的内容,这样我就可以设置文本的前景色。

我试图通过设置QTextEdit的颜色来使用PyQt4中的stylehseets,但这不允许我选择性地为文本着色,对吗?

我有办法实现这个目标吗?

由于

2 个答案:

答案 0 :(得分:2)

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?'''

答案 1 :(得分:1)

使用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属性指定颜色。