我正在开发一个通过 PyQt 和 Qt4 开发的 GUI。在我的 GUI 中,我有一个 QTextEdit,其中写入了各种数据。有没有一种方法可以在 QTextEdit 中操纵一个单词的颜色?
例如
redText = "I want this text red"
self.myTextEdit.write(redText)
blackText = "And this text black"
self.myTextEdit.append(blackText)
这可能吗?如果是这样,我该怎么办?
问候,
须藤!!
您应该为其提供丰富的文本。可以通过创建
<span>
标签并将 color
属性设置为 RGB 值来完成:
redText = "<span style=\" font-size:8pt; font-weight:600; color:#ff0000;\" >"
redText.append("I want this text red")
redText.append("</span>")
self.myTextEdit.write(redText)
blackText = "<span style=\" font-size:8pt; font-weight:600; color:#000000;\" >"
blackText.append("And this text black")
blackText.append("</span>")
self.myTextEdit.append(blackText)
在研究了人们使用的其他方法后,我想出了并想分享。 我尝试使用 QTextEdit 的“.setHtml”功能,但它不起作用。
我发现你可以更改文本颜色,添加文本,然后再次更改它,更改颜色后添加的任何文本都会变成该颜色,但没有其他颜色。
这是一个例子。
redColor = QColor(255, 0, 0)
blackColor = QColor(0, 0, 0)
# First, set the text color to red
self.myTextEdit.setTextColor(redColor)
redText = "I want this text red"
self.myTextEdit.write(redText)
# To change it back to black, we manually use `setTextColor` again
self.myTextEdit.setTextColor(blackColor)
blackText = "And this text black"
self.myTextEdit.append(blackText)
还有,我想补充一下。 “.write”和“.append”函数不适用于我的“QTextEdit”类。不确定你的是否这样做,但对我有用的是“.insertPlainText”函数。只需将您的字符串转换为“QString”,就像这样
blackText = QString(blackText)
Nejat 的答案对我有用,将“.append()”替换为“+=”:
redText = "<span style=\" font-size:8pt; font-weight:600; color:#ff0000;\" >"
redText += "I want this text red"
redText += "</span>"
self.myTextEdit.write(redText)
blackText = "<span style=\" font-size:8pt; font-weight:600; color:#000000;\" >"
blackText += "And this text black")
blackText += "</span>"
self.myTextEdit.append(blackText)
我遇到了同样的问题,但没有找到明确的解决方案来解决它。 基本上,在弄清楚如何按其工作方式为文本着色之前,我的 GUI 会重叠颜色,并且无法使用独立颜色处理文本。
因此,有一天,我浏览互联网,收集了一些信息,发现了类似的内容:
#Import QColor, this will be responsible for doing the job.
from PyQt5.QtGui import QColor
from PyQt5 import uic, QtWidgets
class Program:
def writeonthescreen(self):
#Set a color
Screen.your_text_edit.setTextColor(QColor(255, 51, 0))
#Write colored text
Screen.your_text_edit.append('Red')
Screen.your_text_edit.setTextColor(QColor(0, 204, 0))
Screen.your_text_edit.append('Green')
Screen.your_tex_edit.setTextColor(QColor(0, 0, 255))
Screen.your_text_edit.append('Blue')
if __name__ == '__main__':
'''
"Screen" is the name we will use to name the screen to be loaded.
Imagine that this screen contains a QTextEdit, and a button that when pressed displays your text.
'''
app = QtWidgets.QApplication([])
Screen = uic.loadUi('./your_screen_path')
Screen.button_showtext_on_the_screen.clicked.connect(Program.writeonthescreen)
Screen.show()
app.exec()
PySide 与 PyQt 非常相似,因此如果有人想知道如何搜索 PySide,则此代码将适用于 PySide6
red_text = "I want this text red"
self.myTextEdit.setHtml(f"<span style=\"color:#ff0000;\" > {red_text} </span>")
black_text = "I want this text black"
self.myTextEdit.setHtml(f"<span style=\"color:#000000;\" > {black_text} </span>")