Так у меня есть QTextEdit и я поставить некоторые HTML гиперссылки на локальный файл в нем, как это:PyQT гиперссылка не запускает внешнюю программу
<a href="file:\\path\\to\\myfile">link</a>
Когда я запустить мое приложение, Qt ставит мою ссылку в синий цвет, но это не показывает маленькую руку, и я не могу нажать на нее.
Перед тем, как бросать камни на меня:
- Я проверил, что мой файл действительно существует, конечно
- Я попытался с помощью QTextBrowser вместо этого, рука показывает вверх, но когда я нажимаю на него, мои курсоры закрутки в течение длительного времени и, и приложение в конце концов открывает файл бинарные файлы в моем QTextBrowser
- я установить флаги взаимодействия
self.workflow_log_textedit.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextBrowserInteraction|QtCore.Qt.TextEditable|QtCore.Qt.TextEditorInteraction|QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
- Я попытался положить 3 слеш между «файлом» и этим путем
<a href="file:///\\path\\to\\myfile">link</a>
, это просто очищает мой QText Браузер, когда я нажимаю его - Я попытался добавить
type="image"
иtarget="_blank"
в моей гиперссылке, такой же результат
Я хочу отметить, что это не работает лучше с HTTP ссылки
EDIT: 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_())
Я добавил mcve запрошенную – Narthe