吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 297|回复: 4
收起左侧

[求助] pyqt5,求教大佬文本框如何在右键时保持高亮文本显示

[复制链接]
858983646 发表于 2026-2-5 13:59
Screenshot_2026-02-05-13-49-18-167_com.carriez.flutter_hbb-edit.jpg
右键菜单出现时,原本高亮的文本会被取消高亮显示,虽然复制粘贴剪切功能都正常。
修改了好多遍,也只实现了菜单关闭后恢复高亮。菜单出现期间继续保持高亮文本选中应该怎么解决
PyQt5版本: 5.15.2 Python版本: 3.12.4

[Python] 纯文本查看 复制代码
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit
from PyQt5.QtCore import Qt


class TextEditor(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("带右键菜单的文本框")
        self.setGeometry(100, 100, 600, 400)

        # 创建文本编辑框
        self.text_edit = QTextEdit(self)
        self.setCentralWidget(self.text_edit)
        
        # 启用上下文菜单(默认就是启用的,这里显式设置)
        self.text_edit.setContextMenuPolicy(Qt.DefaultContextMenu)


if __name__ == '__main__':
    app = QApplication([])
    window = TextEditor()
    window.show()
    app.exec_()

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
outdoorreadbook + 1 + 1 用心讨论,共获提升!
AG6 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

深度学员 发表于 2026-2-5 14:19
这个问题挺经典的。通常是因为右键菜单弹出时,QTextEdit 失去了焦点或者触发了某种清空选择的逻辑。

你可以尝试在重写 contextMenuEvent 时,显式地调用一下 setFocus(),或者使用 QTextCursor 来锁定选区。

示例代码:
def contextMenuEvent(self, event):
    self.text_edit.setFocus()
    menu = self.text_edit.createStandardContextMenu()
    menu.exec_(event.globalPos())

另外,检查一下有没有其他的 focusOutEvent 干扰。希望能帮到你!🍃

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
outdoorreadbook + 1 + 1 用心讨论,共获提升!

查看全部评分

jyb918 发表于 2026-2-5 14:50
本帖最后由 jyb918 于 2026-2-5 14:51 编辑

思路:可以新建一个最简单的demo测试下,如果确实如此就是原生效果,可以去重写内部函数
QT5我没测试过,QT6右键弹出菜单时也会有取消选中的效果,但只是看似取消,实际选中文本的背景色由蓝色变成与背景相似的浅灰色(与你的截图效果一致,浅灰色背景,并非取消选中)
 楼主| 858983646 发表于 2026-2-5 15:16
jyb918 发表于 2026-2-5 14:50
思路:可以新建一个最简单的demo测试下,如果确实如此就是原生效果,可以去重写内部函数
QT5我没测试过,Q ...

谢谢解决了,确实是保持高亮了,只是颜色变成灰色看不到了。改下高亮颜色解决了
 楼主| 858983646 发表于 2026-2-5 15:28
深度学员 发表于 2026-2-5 14:19
这个问题挺经典的。通常是因为右键菜单弹出时,QTextEdit 失去了焦点或者触发了某种清空选择的逻辑。

你 ...

谢谢,不是这个原因,就是高亮被改成和背景一个颜色了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-2-20 17:07

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表