如何 select QTextBrowser 中的所有事件
How to select all the occurrences in QTextBrowser
代码创建 QTextBrowser
window 填充文本行。
我想 select 所有匹配 "Long Line" 的词
如何实现?
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_()
您可以使用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
window 填充文本行。
我想 select 所有匹配 "Long Line" 的词
如何实现?
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_()
您可以使用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
。