Pyqt 超链接不启动外部应用程序

Pyqt hyperlink not launching external application

所以我有一个 QTextEdit,我把一些 html hyperlink 放到其中的本地文件中,如下所示:

<a href="file:\path\to\myfile">link</a>

当我启动我的应用程序时,Qt 将我的 link 显示为蓝色,但它没有显示小手,我无法点击它。

在你向我扔石头之前:

我想指出它在 http links

上的效果并没有更好

编辑: MCVE 根据要求:

#!/usr/bin/python

from PyQt4 import QtGui, QtCore

import sys

class MyMainWindow(QtGui.QMainWindow):

    def __init__(self, parent=None):

        super(MyMainWindow, self).__init__(parent)
        self.tb = QtGui.QTextBrowser()
        self.tb.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextBrowserInteraction|QtCore.Qt.TextEditable|QtCore.Qt.TextEditorInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
        self.tb.setHtml('<a target="_blank" href="file:///{path}">{path}</a>'.format(path='C:\Users\johndoe\Pictures\doge.png'))
        self.setCentralWidget(self.tb) 

app = QtGui.QApplication([])
foo = MyMainWindow()
foo.show()
sys.exit(app.exec_())

如果将 url 设置为 html 文档,您的示例将正常工作。但是如果你把它设置为一个图像文件,它就不会工作,因为同样的原因,如果你试图在 text-editor 中打开一个图像文件,它就不会工作。 QTextEditQTextBrowser 类 可以处理纯文本,加上 limited subset of HTML4 - 仅此而已。

当然,您可以使用 <img> 标签在 html 文档中显示图像。所以像下面这样的东西应该有效:

self.tb.setHtml('<img src="image.png" />')

图片超链接:

self.tb.setHtml('<a href="doc.html"><img src="image.png" /></a>')