You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PyQt5中textEdit.find()的查找结果呈现深度选中高亮效果?

解决方案

你遇到的浅高亮是QTextEdit默认的临时查找匹配标记,不属于编辑器原生选中状态。要实现原生选中的深度高亮,只需要在查找匹配成功后,主动将定位到匹配位置的光标设置为编辑器的激活光标即可。

修改后的完整代码如下:

def search(self, term, case_sensitive=False):
    self.textedit.moveCursor(qtg.QTextCursor.Start)
    find_flag = qtg.QTextDocument.FindFlag(0)
    if case_sensitive:
        find_flag |= qtg.QTextDocument.FindCaseSensitively
    
    # 执行查找操作,返回是否匹配成功
    found = self.textedit.find(term, find_flag)
    if not found:
        self.statusBar().showMessage('No matches Found', 2000)
        return
    
    # 核心逻辑:获取匹配到文本的光标对象,重新设置给textEdit触发原生选中高亮
    match_cursor = self.textedit.textCursor()
    self.textedit.setTextCursor(match_cursor)

改动说明

  • PyQt/PySide中QTextEdit.find()返回值为布尔类型,代表是否找到匹配内容,原代码中用cur接收布尔值容易产生歧义,这里做了修正
  • 查找成功后textEdit的内部光标已经自动定位到匹配文本的范围,主动调用setTextCursor重设光标后,就会把临时查找高亮替换为原生的选中深度高亮

内容的提问来源于stack exchange,提问作者Eliazar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:54:03