Текст PySide/PyQt в QTextBrowser исчезает после нажатия на ссылку в нем

У меня есть следующая переменная, добавленная к «QTextBrowser». Он отображается как ссылка, но когда я нажимаю на нее, весь текст в «QTextBrowser» исчезает. Вся функция, к которой подключен сигнал 'anchorClicked', - это напечатать что-то в оболочке, чтобы я знал, что сигнал был получен.

word = '<a href>' + '<span style="background-color:#C0C0C0">' + word + '</span>' +'</a>'

self.textBrowser.anchorClicked.connect(self.test)

def test(self,argv_1):
    print('!!!')

person UrbKr    schedule 18.10.2013    source источник
comment
Пожалуйста, обновите свой вопрос, чтобы показать фактический код, который вызывает проблему.   -  person ekhumoro    schedule 18.10.2013
comment
Я добавил другую часть.   -  person UrbKr    schedule 18.10.2013


Ответы (3)


Вероятно, происходит то, что текстовый браузер пытается перейти к адресу href, указанному в якоре. Но поскольку href пуст, он просто показывает пустую страницу.

Если вы хотите остановить автоматическую навигацию по ссылкам, попробуйте следующее:

self.textBrowser.setOpenLinks(False)

(Примечание: сигнал anchorClicked по-прежнему будет отправляться при нажатии на ссылку).

person ekhumoro    schedule 18.10.2013

Вы также можете предотвратить такое поведение, вызвав self.textBrowser.setSource(QtCore.QUrl()) в функции, связанной с сигналом anchorClicked (в вашем случае test()).

Например, посмотрите, что я сделал в моем ответе на ваш другой вопрос здесь: https://stackoverflow.com/a/19475367/1994235

Это позволяет вам по-прежнему иметь некоторые ссылки, которые ведут на другие страницы, а некоторые нет (вы вызываете приведенную выше строку кода, чтобы предотвратить изменение страницы, только когда определенные URL-адреса передаются вашей функции)

person three_pineapples    schedule 20.10.2013

Используйте html2text, чтобы загрузить URL-адрес в соответствующий каталог для каждой ссылки на странице. Переформатируйте в HTML, добавив заголовки и перемонтировав ссылки. Затем делайте это рекурсивно каждый раз, когда вы нажимаете на ссылку, и у вас фактически есть работающий веб-браузер. Ссылки действительно будут работать. Я хотел бы увидеть, как кто-то сделает это менее чем на 3 страницы, если сможет.

person sadf    schedule 02.12.2014
comment
Как это связано с конкретной проблемой в этом вопросе? - person Air; 02.12.2014