在 PyQt5 中将 QsciScintilla 的文本光标向左或向右移动

Move text-cursor of QsciScintilla to the left or right in PyQt5

我想知道我可以执行哪些特定命令来将 QsciScintilla 中的文本光标向左或向右移动?我知道对于 QPlainTextEdit,您可以执行命令:

self.textEdit.moveCursor(QTextCursor.Left)

或:

self.textEdit.moveCursor(QTextCursor.Right)

QsciScintilla 有类似的命令吗?

我试过了:

# left cursor movement
line, index = self.sci.getCursorPosition()
if index == 0 and line != 0:
   #move to back line
elif index != 0: 
   self.sci.setCursorPosition(line, index - 1)

有两种方法可以做到这一点:

  1. 直接使用 low-level api to send keyboard commands 底层闪烁编辑器:

    • 向左移动

        self.sci.SendScintilla(Qsci.QsciScintillaBase.SCI_CHARLEFT)
      
    • 右移

        self.sci.SendScintilla(Qsci.QsciScintillaBase.SCI_CHARRIGHT)
      
  2. 使用high-level api显式设置行和索引:

    • 向左移动

        line, index = self.sci.getCursorPosition()
        if index:
            self.sci.setCursorPosition(line, index - 1)
        elif line:
            self.sci.setCursorPosition(
                line - 1, self.sci.lineLength(line - 1) - 1)
      
    • 右移

        line, index = self.sci.getCursorPosition()
        if index < self.sci.lineLength(line):
            self.sci.setCursorPosition(line, index + 1)
        elif line < self.sci.lines():
            self.sci.setCursorPosition(line + 1, 0)