在 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 的文本光标向左或向右移动的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PyQt5 中将字符串数组传递给 dbus? [复制]
如何在 QTableView 中将 QColor 作为 QBackgroundRole 返回,它在 PyQt5 中具有预设样式表?
QsciScintilla 中的 QSyntaxHighlighter 的 setCurrentBlockState 是不是有任何等价物?