pyqt5 中 在textEdit已输入的内容 选出指定内容标红
时间: 2024-02-12 20:02:51 浏览: 101
您可以使用QTextEdit的find方法来查找指定文本,并将其标红。以下是一个简单的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QTextEdit, QWidget, QVBoxLayout
from PyQt5.QtGui import QTextCharFormat, QBrush, QColor
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建一个QTextEdit
self.text_edit = QTextEdit(self)
self.text_edit.setText("这是一段测试文本,其中的指定内容将被标红。")
# 查找指定文本并将其标红
cursor = self.text_edit.textCursor()
while cursor.hasSelection():
cursor.clearSelection()
cursor.setPosition(0)
format = QTextCharFormat()
format.setBackground(QBrush(QColor("red")))
while cursor.movePosition(cursor.NextWord, cursor.KeepAnchor):
if cursor.selectedText() == "指定内容":
cursor.mergeCharFormat(format)
# 创建一个布局并将QTextEdit添加到该布局中
layout = QVBoxLayout(self)
layout.addWidget(self.text_edit)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
在这个例子中,我们首先创建了一个QTextEdit,并将一段测试文本添加到其中。然后,我们使用textCursor方法获取QTextEdit的光标,并将其移动到文本的起始位置。接着,我们创建了一个QTextCharFormat对象,并将其背景色设置为红色。然后,我们使用while循环和movePosition方法查找指定文本,并将其在QTextEdit中标红。最后,我们将该QTextEdit添加到一个布局中并显示出来。
在while循环中,我们首先使用hasSelection方法检查光标是否已经选中了文本。如果有选中的文本,我们就使用clearSelection方法将其清除。然后,我们将光标移动到文本的起始位置,并使用movePosition方法查找下一个单词。如果该单词的文本与指定文本相同,我们就使用mergeCharFormat方法将其标红。最后,我们将光标移动到下一个单词的起始位置,并继续查找指定文本,直到找不到为止。
阅读全文