PyQt: QWhatsThis, отображать HTML страницу с изображением - PullRequest
1 голос
/ 02 апреля 2020

Я хочу отобразить контекстную справку / do c с QWhatsThis из HTML файла с вложенным изображением ; но изображение не отображается.

В соответствии с документацией Справочник по классам QWhatsThis , QWhatsThis позволяет вводить расширенный текст; rich-text - это подмножество HTML4, страница из документации PyQt4 richtext html подмножество недоступно, но согласно документации Qt5 Поддерживается HTML Подмножество , тег:

<img src="image.png" width="42px" height="314px"/>

поддерживается.

Вот минимальный рабочий пример, который я написал:

# -*- coding: utf-8 -*-

from PyQt4.QtGui import QApplication, QPushButton, QMainWindow, QWidget, QHBoxLayout, QLabel
import sys

class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()

        self.setWindowTitle("PyQt4 WhatsThis display image")
        self.setGeometry(500, 200, 300, 250)  # left, top, width, height

        hbox = QHBoxLayout()
        button = QPushButton("Click me", self)

        with open("doc.html", 'r') as fr:
            html_doc = fr.read().decode('utf8')
        button.setWhatsThis(html_doc)

        hbox.addWidget(button)
        self.setLayout(hbox)
        self.show()

app = QApplication(sys.argv)
window = Window()
sys.exit(app.exec_())

и страница HTML с изображением, которое я хочу отобразить:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
        <h1>Repère pour les angles du champ de vitesse en entrée</h1>
        <p>Voilà de l’aide !</p>
        <img src="image.png" width="512px"/>
        <p>Bla bla bla</p>
    </body>
</html>

Я пробовал три разные конфигурации:

  • Python 2.7.5, PyQt4
  • Python 3.7.7, PyQt4
  • Python 3.7.7, PyQt5

и я получаю точно такой же вывод, т.е. изображение не отображается:

Снимок экрана при нажатии Shift + f1 с курсором на кнопке

В чем проблема? QWhatsThis действительно поддерживает изображение? Что-то добавить в файл HTML?

Примечание: источник python является источником для Python 2.7.5 и PyQt4 ; все источники доступны на Google drive .

1 Ответ

1 голос
/ 02 апреля 2020

Проблема вызвана тем, что атрибут width не обязательно должен указывать на «px», а только на значение, поскольку во всплывающей подсказке используется QTextDocument, который поддерживает только некоторые HTML4 функции . Таким образом, вы должны изменить:

<img src="image.png" width="512px"/>

на

<img src="image.png" width="512"/>

enter image description here

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