大加加 2021-05-09 10:38 采纳率: 66.7%
浏览 88
已结题

如何设置textbrowser中的链接可点击?

我写了一个模仿搜索引擎的python程序,这一段是前端输出的主要内容:

 urls = []
    cnt = 0
    for num, docscore in sortedlist:
        try:
            cnt = cnt + 1
            c.execute('select link from doc where id=?', (num,))  # 根据num的值在doc表中找到相对应的网址链接
            url = c.fetchall()[0][0]  # 得到具体链接的字符串
            print('\n')
            print(url, '  排名分:', format(docscore, '.3f'), '  序号:', cnt)  # 输出网址和得分
            urls.append(url)

        except:
            cnt = cnt - 1
            continue

“输出网址和得分”那一行是最主要的输出。(同时这段代码是搜索功能相关代码usesearch中的一段)

现在的输出是这样的,输出在了textbrowser上:

可以看到链接是白色不可点击的,我textbrowser的openlinks和openexternallinks都设置为true。。。。。。

这是main函数里的点击事件:

    def beclicked1(self):
        self.textBrowser.clear()
        kwd = self.search_input.text()
        usesearch(kwd)
        urlss = usesearch(kwd)

作用是点击“搜索一下”按钮时将用户输在框里的词传到搜索功能相关的代码里并启动,然后“输出网址和得分”输出到前端的webbrowser上。

在usesearch里,我新建了数组urls用来保存出现的链接,最终我return了urls,现在在main函数里我引用了usesearch并将urls赋值给了urlss,接下来我就不知道该怎么弄了。我想让链接可直接点击,同时不破坏“输出网址和得分”那样的格式,换句话说就是让它们在原本的位置上可直接点击。

 

 

  • 写回答

1条回答 默认 最新

  • Lotay_天天 嵌入式领域优质创作者 2023-05-04 15:15
    关注

    你可以在 textbrowser 中使用 setOpenExternalLinks(True) 方法来设置链接可点击。

    代码可以参考下面的:

    from PyQt5.QtCore import QUrl
    from PyQt5.QtGui import QTextCursor
    from PyQt5.QtWidgets import QTextBrowser
    
    # 创建一个文本浏览器
    text_browser = QTextBrowser()
    
    # 设置文本浏览器中的链接可点击
    text_browser.setOpenExternalLinks(True)
    
    # 在循环中添加链接
    for num, docscore in sortedlist:
        try:
            cnt = cnt + 1
            c.execute('select link from doc where id=?', (num,))
            url = c.fetchall()[0][0]
            text_cursor = text_browser.textCursor()
            # 使用 insertHtml 方法插入带有链接的文本
            text_cursor.insertHtml(f'<a href="{url}">{url}</a> 排名分:{format(docscore, ".3f")} 序号:{cnt}<br>')
        except:
            cnt = cnt - 1
            continue
    

    还有别忘了需要在文本中插入 HTML 标签来创建链接。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月13日
  • 已采纳回答 5月5日

悬赏问题

  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗
  • ¥15 MOD04_3K图像预处理