python - 在 PyQt5 中将 QsciScintilla 的文本光标向左或向右移动
问题描述
我想知道我可以执行哪些特定命令来将 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)
解决方案
有两种方法可以做到这一点:
使用低级 api将键盘命令直接发送到底层 scintilla 编辑器:
向左移动
self.sci.SendScintilla(Qsci.QsciScintillaBase.SCI_CHARLEFT)
向右移
self.sci.SendScintilla(Qsci.QsciScintillaBase.SCI_CHARRIGHT)
使用高级 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)
推荐阅读
- rational-team-concert - 如何只接受变更集中的特定文件
- python - 错误的文件描述符python套接字
- django - 在 Google 表格中处理竞争条件
- javascript - 如何使用用户选择的变量获得烧瓶终点?
- python - 序列化 DRF 中的相关字段
- php - SQL 提升和规则表
- angular - Angular 6 - 区分文字和参数化路线
- node.js - 在猫鼬中删除数组内的对象
- python-3.x - 如何从两列中获取包含特定值的熊猫数据框的行索引?
- javascript - 如何同时使用 stacknavigator 和 tabnavigator?