我想創建一個像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