QTextBrowser получает URL на привязке с фокусом - PullRequest
0 голосов
/ 19 мая 2019

Использование anchorClicked.connect () в объекте QTextBrowser обеспечивает URL-адрес якоря ... что я и хочу, однако ...

Я хотел бы перейти на якорь, а не щелкать по нему.

В настоящее время я обнаруживаю, что якорь получает фокус с помощью EventFilter, который обнаруживает событие «focusIn».

Все, что мне сейчас нужно, это способ «получения URL» на этом якоре.

EventFilter () предоставляет источник сигнала следующим образом:

"PyQt5.QtWidgets.QTextBrowser объект по адресу 0x000001D42BA48558 "

Пытался получить содержимое этого адреса памяти, используя:

content = ctypes.cast(int(hex(source.group(2))), ctypes.py_object).value

, но возникла проблема с использованием предоставленного шестнадцатеричного адреса ID.

Кроме того, этот адрес памяти может даже не иметь URL-адреса… в документации не говорится.

#create a qtextbrowser widget
self.doco = QTextBrowser(self.mainpane)

#listen for mouse-click on anchor signal     OR
self.doco.anchorClicked.connect(self.contractAnchorClicked)   #this works
#listen for tab to anchor signal
self.focusInFilter = FocusInFilter(self.doco)   #works but no URL
self.doco.installEventFilter(self.focusInFilter)
self.focusInFilter.focusIn.connect(self.detectFocusOnAnchor)

#run this method if mouse-click detected 
def anchorClicked(self,url):
    print("in anchorClicked: url=",url)


#run this method if tab to anchor detected
def focusOnAnchor(self):
    print("in focusOnAnchor")



#the event filter 
class FocusInFilter(QObject):
    focusIn = pyqtSignal()
    def eventFilter(self, source, event):
        if event.type() == QEvent.FocusIn:
            print("--eventFilter() focus detected " + str(source))
            self.focusIn.emit()  
            return True
        return False

Надеюсь, кто-нибудь знает, как получить URL-адрес привязки.

Если ящелкнув мышью на якоре, я получаю следующее консольное сообщение:

"в anchorClicked: url = PyQt5.QtCore.QUrl 'http://www.____test____.com')", как и ожидалось.

Если перейти на вкладкуякорь Я получаю следующее консольное сообщение:

"in focusOnAnchor", как и ожидалось.

Мне просто нужно как-то добавить URL к этому результату.

Спасибо, ребята

Красный Ровер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...