如何设置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,接下来我就不知道该怎么弄了。我想让链接可直接点击,同时不破坏“输出网址和得分”那样的格式,换句话说就是让它们在原本的位置上可直接点击。

 

 

你可以在 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 标签来创建链接。