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

Posted

技术标签:

【中文标题】在 PyQt5 中将 QsciScintilla 的文本光标向左或向右移动【英文标题】:Move text-cursor of QsciScintilla to the left or right in PyQt5 【发布时间】: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)

【问题讨论】:

QScintilla Documentation. 我已经检查过了并试图想出 setCursorPosition 的代码但没有成功 然后编辑您的问题并添加您尝试过的代码。 【参考方案1】:

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

    使用low-level api 将keyboard commands 直接发送到底层闪烁编辑器:

    向左移动

      self.sci.SendScintilla(Qsci.QsciScintillaBase.SCI_CHARLEFT)
    

    向右移动

      self.sci.SendScintilla(Qsci.QsciScintillaBase.SCI_CHARRIGHT)
    

    使用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)
    

【讨论】:

这很完美!谢谢。

以上是关于在 PyQt5 中将 QsciScintilla 的文本光标向左或向右移动的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中将函数连接到 PyQT5 GUI

如何在 PyQt5 中将字符串数组传递给 dbus? [复制]

如何在 PyQt5 中将字节数组图像添加到 QLabel

如何在 QTableView 中将 QColor 作为 QBackgroundRole 返回,它在 PyQt5 中具有预设样式表?

QsciScintilla 中的 QSyntaxHighlighter 的 setCurrentBlockState 是不是有任何等价物?

如何在pyqt5中将按钮移动到另一个框架?