使用QScintilla进行多光标编辑

时间:2016-08-09 12:07:39

标签: python pyqt pyqt5 qscintilla

我想在SublimeText中创建一个支持多光标编辑的小QScintilla小部件。据我所知,Scintilla已经支持多个游标,但我没有看到任何例子。

那么,有没有人可以发布一个小例子来展示QScintilla的多个游标的基础知识?

1 个答案:

答案 0 :(得分:1)

Scintilla中提供了多光标功能,但QScintilla并未为此功能提供直接包装。但是,你可以重新实现"你的包装器,因为几乎所有东西都可以用SendScintilla方法完成。

from PyQt5.Qsci import QsciScintilla
from PyQt5.QtWidgets import QApplication

app = QApplication([])

ed = QsciScintilla()

ed.setText('insert <-\nsome <-\ntext <-\n')
ed.show()

# typing should insert in all selections at the same time
ed.SendScintilla(ed.SCI_SETADDITIONALSELECTIONTYPING, 1)

# do multiple selections
offset = ed.positionFromLineIndex(0, 7) # line-index to offset
ed.SendScintilla(ed.SCI_SETSELECTION, offset, offset)
# using the same offset twice selects no characters, hence a cursor

offset = ed.positionFromLineIndex(1, 5)
ed.SendScintilla(ed.SCI_ADDSELECTION, offset, offset)

offset = ed.positionFromLineIndex(2, 5)
ed.SendScintilla(ed.SCI_ADDSELECTION, offset, offset)

app.exec_()

您应该将SendScintilla调用包装在自己的包装器中。

请记住,offset以字节表示,因此取决于文本的编码,这些编码或多或少地被QScintilla的QStrings隐藏。另一方面,&#34;线索引&#34;用字符表示(如果使用unicode则代码点),因此更可靠。