2017-01-19 8 views
2

コードでは、テキストの行で塗りつぶされたQTextBrowserウィンドウが作成されます。 "Long Line"に一致する単語をすべて選択します これを達成するには?QTextBrowserですべての出現を選択する方法

enter image description here

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_() 

答えて

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_() 

を使用することができますそして、ここでの結果である:

the QTextBrowser on win7

またQSyntaxHighlighterを試してみてくださいが。

関連する問題