Функция Multi-cursor доступна в 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 выражены в байтах и, следовательно, зависят от кодировки текста, который более или менее скрыт QString QScintilla. С другой стороны, «индекс строки» выражается в символах (кодовые точки при использовании юникода) и, следовательно, более надежны.
Почему бы не попробовать создать пример самостоятельно и добавить его в свой вопрос? Затем вы можете объяснить, с какими конкретными частями * фактического кода * вы испытываете трудности. – ekhumoro
@ekhumoro Конечно, это была бы хорошая отправная точка, проблема в том, что я не знаю, какие методы связаны с тем, что я прошу, это предоставление QScintilla. Сказано иначе, в какой части документации я могу найти это? – BPL