pyqt5 中 在textEdit已输入的内容 选出指定内容标红 highlight_text()函数接收一个QTextEdit和要查找的文本作为参数。它首先清除之前的高亮,然后使用QTextEdit.document().find()方法查找文本,并使用QTextCursor.mergeCharFormat()方法将其标记为黄色
时间: 2024-02-12 14:02:59 浏览: 163
你可以使用以下代码实现`highlight_text()`函数,在`QTextEdit`中将指定文本标记为黄色:
```python
from PyQt5.QtWidgets import QTextEdit
from PyQt5.QtGui import QTextCursor, QTextCharFormat, QColor
def highlight_text(textEdit, text):
# 清除之前的高亮
cursor = textEdit.textCursor()
cursor.select(QTextCursor.Document)
format = QTextCharFormat()
format.setBackground(Qt.white)
cursor.mergeCharFormat(format)
# 查找并标记文本为黄色
cursor = textEdit.document().find(text, QTextCursor.BeginningOfDocument)
while cursor is not None and not cursor.isNull():
format = QTextCharFormat()
format.setBackground(QColor("yellow"))
cursor.mergeCharFormat(format)
cursor = textEdit.document().find(text, cursor)
if __name__ == '__main__':
app = QApplication([])
window = QMainWindow()
textEdit = QTextEdit()
window.setCentralWidget(textEdit)
textEdit.setPlainText('hello world\nhello PyQt5\n')
highlight_text(textEdit, 'hello')
window.show()
app.exec_()
```
在这个例子中,`highlight_text()`函数接收一个`QTextEdit`和要查找的文本作为参数。它首先清除之前的高亮,然后使用`QTextEdit.document().find()`方法查找文本,并使用`QTextCursor.mergeCharFormat()`方法将其标记为黄色。最后,我们在`QMainWindow`中创建一个`QTextEdit`,将文本设置为一些示例文本,并使用`highlight_text()`函数将所有的`hello`标记为黄色。
阅读全文