【问题标题】:Move text-cursor of QsciScintilla to the left or right in PyQt5在 PyQt5 中将 QsciScintilla 的文本光标向左或向右移动
【发布时间】:2021-11-16 08:22:26
【问题描述】:

我想知道我可以执行哪些特定命令来将 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)

【问题讨论】:

  • 我已经检查过了并试图想出 setCursorPosition 的代码但没有成功
  • 然后编辑您的问题并添加您尝试过的代码。

标签: python pyqt5 cursor-position qscintilla


【解决方案1】:

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

  1. 使用low-level api 将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)
      

【讨论】:

  • 这很完美!谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
  • 2012-02-19
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
相关资源
最近更新 更多