Клик по ссылке делает весь текст в QTextBrowser гиперссылкой
После того как я нажимаю на ссылку, весь последующий текст, который добавляется в QTextBrowser имеет в себе ссылку.
Это можно увидеть, если нажать на кнопку gethtml.
import sys
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.resize(500, 500)
self.browser = QTextBrowser(self)
self.browser.resize(500, 300)
self.btn = QPushButton('get html print', self)
self.btn.move(250, 400)
self.btn.clicked.connect(self.gethtml)
self.btn2 = QPushButton('add text', self)
self.btn2.move(150, 400)
self.btn2.clicked.connect(self.addtxt)
self.browser.setOpenLinks(False)
self.browser.anchorClicked.connect(self.anchor_clicked)
def gethtml(self):
print(self.browser.toHtml())
def addtxt(self):
self.browser.append('sample text 1')
self.browser.append('some text: <a href="http://link.com">textlink</a>')
self.browser.append('sample text 2')
def anchor_clicked(self):
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
dlgMain = MainWindow()
dlgMain.show()
sys.exit(app.exec_())
До клика по ссылке
После клика по ссылке:
Я не понимаю какое свойство наделяет нетегированный текст в браузере таким свойством. Создавать тэг на каждую добавленную строчку кода не вариан
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Действительно странно отрабатывает и вам придется заворачивать в какой-либо в тег текст в каждом append или добавлять строки используя insertHtml, примерно так:
import sys
from PyQt5.Qt import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.browser = QTextBrowser(self)
self.browser.setOpenLinks(False)
self.browser.anchorClicked.connect(self.anchor_clicked)
self.btn = QPushButton('get html print', self)
self.btn.clicked.connect(self.gethtml)
self.btn2 = QPushButton('add text', self)
self.btn2.clicked.connect(self.addtxt)
layout = QGridLayout(self.centralWidget)
layout.addWidget(self.browser, 0, 0, 1, 2)
layout.addWidget(self.btn2, 1, 0, 1, 1)
layout.addWidget(self.btn, 1, 1, 1, 1)
def gethtml(self):
print(self.browser.toHtml())
def addtxt(self):
'''
self.browser.append('sample text 1')
self.browser.append('some text: <a href="http://link.com">textlink</a>')
self.browser.append('sample text 2')
'''
self.browser.moveCursor(QTextCursor.End) # +++
# -----------------> vvvvvvvvvv <------------>vvvv<------------------------------------------
self.browser.insertHtml('sample text 1<br>')
self.browser.insertHtml('some text: <a href="http://link.com">textlink</a><br>')
self.browser.insertHtml('sample text 2<br>')
def anchor_clicked(self, link):
print(f'{link}') #
if __name__ == '__main__':
app = QApplication(sys.argv)
dlgMain = MainWindow()
dlgMain.resize(400, 300)
dlgMain.show()
sys.exit(app.exec_())




