通过单击作为超链接制作的 QLabel 打开 .pdf

Open a .pdf by clicking on QLabel made as Hyperlink

我一直在尝试创建一些东西,让我可以点击 Qlabel(转换为超链接)并打开一个 .pdf 文件。

我从得到以下两个想法:

想法 1

self.text_label.setText('<a href=file:///"/Documents/To%20be%20Saved/hello.pdf"> Reference Link</a>')
self.text_label.setOpenExternalLinks(True)

想法 2

self.text_label.setText("<a href={}>Reference Link</a>".format("/Documents/To%20be%20Saved/hello.pdf"))
self.text_label.setOpenExternalLinks(True)

None的思路好像打开那个pdf文件。我看到创建了超链接,但如果我点击它,它什么也没做。

URL必须编码为:

file:///C:/Users/Shaurya/Documents/To%20be%20saved/hello.pdf

除了显示完整路径以便以浏览器身份管理此资源的任何人都可以找到它。

为此,您必须使用 toEncoded(),如下所示:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QLabel()
    path = r"C:\Users\Shaurya\Documents\To be saved\hello.pdf"
    # or
    # path = QDir.home().filePath(r"Documents\To be saved\hello.pdf")
    # or
    # path = QDir(QStandardPaths.writableLocation(QStandardPaths.DocumentsLocation)).filePath(r"To be saved\hello.pdf")
    url = bytearray(QUrl.fromLocalFile(path).toEncoded()).decode() # file:///C:/Users/Shaurya/Documents/To%20be%20saved/hello.pdf
    text = "<a href={}>Reference Link> </a>".format(url)
    w.setText(text)
    w.setOpenExternalLinks(True)
    w.show()
    sys.exit(app.exec_())