2017-01-12 16 views
2

Так у меня есть 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_()) 
+0

Я добавил mcve запрошенную – Narthe

ответ

1

Ваш пример будет работать нормально, если вы установите URL-адрес в html-документ. Но это не сработает, если вы установите его в файл изображения, по той же причине он не будет, если вы попытаетесь открыть файл изображения в текстовом редакторе. Классы QTextEdit и QTextBrowser могут обрабатывать простой текст, а также 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>') 

 Смежные вопросы

  • Нет связанных вопросов^_^