我想创建一个支持多光标编辑的小 QScintilla 小部件,就像在 SublimeText 中一样。据我所知,Scintilla 已经支持多个游标,但我还没有看到任何示例。
那么,任何人都可以发布一个小例子,展示使用 QScintilla 的多个游标的基础知识吗?
我想创建一个支持多光标编辑的小 QScintilla 小部件,就像在 SublimeText 中一样。据我所知,Scintilla 已经支持多个游标,但我还没有看到任何示例。
那么,任何人都可以发布一个小例子,展示使用 QScintilla 的多个游标的基础知识吗?
多光标功能在 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
s 以字节表示,因此取决于文本的编码,这或多或少被 QScintilla 的 QStrings 隐藏。另一方面,“行索引”以字符表示(如果使用 unicode,则为代码点),因此更可靠。