Подсказка по гиперссылке PyQt5 QLabel/ховертекст

#python #python-3.x #pyqt #pyqt5

Вопрос:

Почему это не работает или какая-либо простая альтернатива этому:

 label= QLabel("<b>Name</b>: ABC | <b>Contact</b>: <a style='text-decoration:none;color:black'href='mailto:abc@gmail.com' title='this is a link to email'>abc@gmail.com</a>")
label.setTextFormat(Qt.RichText)
label.setOpenExternalLinks(True)
 

Все работает нормально, кроме названия.
Как я могу показать текст при наведении курсора, когда эта ссылка зависла

Ответ №1:

Qt поддерживает только ограниченное подмножество HTML, которое не включает ключевое слово «заголовок» якоря.

С другой стороны, у QLabel есть linkHovered сигнал, который можно использовать для отображения подсказки QTOOL:

 titles = {
    'mailto:abc@gmail.com': 'this is a link to email'
}

def hover(url):
    if url:
        QToolTip.showText(QCursor.pos(), titles.get(url, url))
    else:
        QToolTip.hideText()

label= QLabel("<b>Name</b>: ABC | <b>Contact</b>: <a style='text-decoration:none;color:black'href='mailto:abc@gmail.com'>abc@gmail.com</a>")
label.setTextFormat(Qt.RichText)
label.setOpenExternalLinks(True)
label.linkHovered.connect(hover)
 

Комментарии:

1. Спасибо @musicamante за приятное объяснение.