如何选择 QTextBrowser 中的所有匹配项
Posted
技术标签:
【中文标题】如何选择 QTextBrowser 中的所有匹配项【英文标题】:How to select all the occurrences in QTextBrowser 【发布时间】:2017-01-19 19:56:43 【问题描述】:代码创建了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_()
【问题讨论】:
【参考方案1】:您可以使用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
。
【讨论】:
以上是关于如何选择 QTextBrowser 中的所有匹配项的主要内容,如果未能解决你的问题,请参考以下文章
Qt 5,为 QTabWidget 中的每个 QTextBrowser 撤消/重做
单击其中的链接后,QTextBrowser 中的 PySide/PyQt 文本消失
QTextBrowser 显示带有多余空格的嵌套 HTML 列表