Die Multi-Cursor-Funktion ist in Scintilla verfügbar, aber QScintilla bietet keine direkten Wrapper für diese Funktion. Sie können jedoch Ihre Wrapper "neu implementieren", da fast alles mit der Methode SendScintilla
durchgeführt werden kann.
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_()
Sie sollten die SendScintilla
Anrufe in Ihre eigenen Wrapper wickeln.
Beachten Sie, dass die offset
s in Bytes ausgedrückt werden und somit von der Codierung des Textes abhängen, die mehr oder weniger von QScintillas QStrings verdeckt wird. Andererseits wird der "Zeilenindex" in Zeichen ausgedrückt (Codepunkte bei Verwendung von Unicode) und sind daher zuverlässiger.
Warum nicht versuchen, selbst ein Beispiel zu erstellen und es zu Ihrer Frage hinzuzufügen? Dann können Sie erklären, mit welchen spezifischen Teilen des * tatsächlichen Codes * Sie Schwierigkeiten haben. – ekhumoro
@ekhumoro Sicher, das wäre ein guter Ausgangspunkt, das Problem ist, ich weiß nicht, welche Methoden in Bezug auf das, was ich frage, gibt QScintilla. Anders gesagt, in welchem Teil der Dokumentation kann ich das finden? – BPL