代码创建填充了文本行的QTextBrowser
窗口。
我想选择所有匹配“长线”的单词
如何实现呢?
from PyQt4 import QtCore, QtGui
app = QtGui.QApplication([])
view = QtGui.QTextBrowser()
for i in range(25):
view.append(10*('Long Line of text # %004d '%i) )
view.setLineWrapMode(0)
view.find('Long Line')
view.show()
app.exec_()
答案 0 :(得分:2)
您可以使用QTextEdit.setExtraSelections
:
import sys
from PyQt4.QtGui import (QApplication, QTextEdit, QTextBrowser, QTextCursor,
QTextCharFormat, QPalette)
app = QApplication(sys.argv)
view = QTextBrowser()
for i in range(25):
view.append(10*('Long Line of text # %004d '%i) )
view.setLineWrapMode(0)
line_to_find = 'Long Line'
# get default selection format from view's palette
palette = view.palette()
text_format = QTextCharFormat()
text_format.setBackground(palette.brush(QPalette.Normal, QPalette.Highlight))
text_format.setForeground(palette.brush(QPalette.Normal, QPalette.HighlightedText))
# find all occurrences of the text
doc = view.document()
cur = QTextCursor()
selections = []
while 1:
cur = doc.find(line_to_find, cur)
if cur.isNull():
break
sel = QTextEdit.ExtraSelection()
sel.cursor = cur
sel.format = text_format
selections.append(sel)
view.setExtraSelections(selections)
view.show()
app.exec_()
结果如下:
或者尝试QSyntaxHighlighter
。