【问题标题】:PyQt QTextEdit text selection without moving the cursor (like ubuntu terminal)PyQt QTextEdit 文本选择而不移动光标(如 ubuntu 终端)
【发布时间】:2015-08-28 23:08:31
【问题描述】:

我通过 PyQt QTextEdit 开发了一个 shell(模仿 ubuntu 终端 --> 只能在当前提示后编辑文本)。

问题是当我选择一些文本时,光标会在我选择此文本时移动(因此它会从当前命令行消失)并且我希望光标保持在原位(仅当我选择文本时,因为当我通过textEdit.moveCursor(...) 以编程方式移动它时,我希望它移动,同时我正在选择文本。

有人知道我该怎么做吗?

我现在的解决方案是在任何更改时保存位置(除非通过单击更改),当我复制一些文本并粘贴它时,它会自动粘贴到光标的最后一个位置在点击之前。这完美地工作,但它对用户来说是“丑陋的”,因为正如我所说,当他选择文本时,光标会从当前行消失,并且是用户选择文本的位置。不像在 ubuntu 终端中。

提前致谢!对不起我的英语。

阿德里

【问题讨论】:

    标签: pyqt


    【解决方案1】:

    我没有看到使用文本编辑器 API 实现此功能的简单解决方案。基本上,终端是一种黑客行为。它将只读元素(当前提示上方的任何内容)与文本编辑器混合在一起。

    我的方法是创建两个文本编辑器,将其中一个设为只读并在其中显示所有操作的结果。如果你隐藏两个编辑器的边框,那么它看起来就像一个单一的。您可能必须将一堆事件(如使用键盘滚动)转发到只读显示器。

    【讨论】:

    • 感谢您的回答。你认为捕捉 mousePressEvent 和 doubleClickMousePressEvent 并手动实现文本选择会比你说的更容易吗?
    • @adriapm 绝对不是。尝试在命令附加文本时选择一些文本。如果操作不正确,新文本将出现在鼠标当前位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2014-08-28
    • 2020-09-15
    相关资源
    最近更新 更多