0

SublimeText のようなマルチカーソル編集をサポートする小さな QScintilla ウィジェットを作成したいと思います。私が知る限り、Scintilla は既に複数のカーソルをサポートしていますが、実際の例は見たことがありません。

では、QScintilla を使用した複数のカーソルの基本を示す小さな例を誰か投稿していただけませんか?

4

1 に答える 1

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独自のラッパーで呼び出しをラップする必要があります。

s はバイト単位で表されるため、QScintilla のQStringsoffsetによって多かれ少なかれ隠されているテキストのエンコーディングに依存することに注意してください。一方、「行インデックス」は文字 (Unicode を使用している場合はコードポイント) で表現されるため、より信頼性が高くなります。

于 2016-08-10T22:44:33.220 に答える