我想创建一个像SublimeText中一样支持多光标编辑的小QScintilla小部件。据我所知Scintilla已经支持多个游标,但我没有看到任何例子。使用QScintilla进行多光标编辑
那么,任何人都可以请一个小示例显示与QScintilla多个游标的基础?
我想创建一个像SublimeText中一样支持多光标编辑的小QScintilla小部件。据我所知Scintilla已经支持多个游标,但我没有看到任何例子。使用QScintilla进行多光标编辑
那么,任何人都可以请一个小示例显示与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,则为码位),因此更可靠。
为什么不尝试自己创建一个示例,并将其添加到您的问题?然后,您可以解释您实际代码中哪些特定部分有问题。 – ekhumoro
@ekhumoro当然,这是一个很好的起点,问题是我不知道哪些方法与我要求提供的QScintilla相关。换句话说,我可以在哪些文档中找到这个? – BPL