Estoy haciendo una App en Python y en algunas partes del programa informo al usuario que se han creado varios documentos, y esto lo muestro en un widget QTextBrowser()
.Yo lo muestro con un hipervinculo para que de esa forma al hacer click en el, al usuario se le abra el fichero.He conseguido que funcione si el fichero no tiene espacios en blanco en su ruta.
He leído en muchos foros pero no encuentro la solución.
He escrito estos dos códigos para hacer pruebas.
En el código 1 utilizo QLabel
y funciona perfectamente, pero si uso QTextBrowser
no funciona.
Opción 1 funciona porque no hay espacios en la ruta del fichero.
Opción 7 y 10, abren el fichero pero el contenido se vuelca dentro del wiget.
Alguna idea?
CODE 1
import sysfrom PyQt5.QtWidgets import QApplication, QTextBrowser,QTextEdit,QLabelfrom PyQt5.QtCore import QUrlapp = QApplication(sys.argv)label=QLabel()file_2='c:/temp/test 2/test.docx'urlLink="<a href='file:///%s'>'Opción_12'</a>"%(file_2)label.setText(urlLink)label.setOpenExternalLinks(True)label.show()sys.exit(app.exec_())
CODE 2
import sysfrom PyQt5.QtWidgets import QApplication, QTextBrowser,QTextEditfrom PyQt5.QtCore import QUrlif __name__ == '__main__': app = QApplication(sys.argv) text_area = QTextBrowser() file='c:/temp/test.docx' link='<a href='"'{}'"'>Opción_1</a>'.format(file) text_area.insertHtml(link) file_2='c:/temp/test 2/test.docx' link='<br><a href='"'{}'"'>Opción_2</a></br>'.format(file_2) text_area.insertHtml(link) file_2_reformated=file_2.replace(" ", "\\ ") link='<br><a href='"'{}'"'>Opción_3</a></br>'.format(file_2_reformated) text_area.insertHtml(link) file_2_reformated=file_2.replace(" ", "%20") link='<br><a href='"'{}'"'>Opción_4</a></br>'.format(file_2_reformated) text_area.insertHtml(link) file_2_reformated=chr(34)+file_2+chr(34) link='<br><a href='"'{}'"'>Opción_5</a></br>'.format(file_2_reformated) text_area.insertHtml(link) file_2_reformated = " \"" + file_2 +" \"" link='<br><a href='"'{}'"'>Opción_6</a></br>'.format(file_2_reformated) text_area.insertHtml(link) link='<br><a href='"'file:///{}'"'>Opción_7</a></br>'.format(file_2) text_area.insertHtml(link) link='<br><a href='"'https://{}'"'>Opción_8</a></br>'.format(file_2) text_area.insertHtml(link) file_3="file:///c:/temp/test 2/test.docx" link='<br><a href='"'https://{}'"'>Opción_9</a></br>'.format(file_3.as_uri()) text_area.insertHtml(link) file_2='c:/temp/test 2/test.docx' link = '<br><a href="{}">Opción_10</a></br>'.format(QUrl.fromLocalFile(file_2).toString()) text_area.insertHtml(link) file_2='c:/temp/test 2/test.docx' link = '<br><a href="\'{}\'">Opción_11</a></br>'.format(QUrl.fromLocalFile(file_2).toString()) text_area.insertHtml(link) from pathlib import PureWindowsPath file_3 = PureWindowsPath("c:/temp/test 2/test.docx") link = '<br><a href="{}">Opción_13</a></br>'.format(file_3.as_uri()) text_area.insertHtml(link) text_area.setOpenExternalLinks(True) text_area.show() sys.exit(app.exec_())