У меня есть приложение на Python, которое просто отображает заданный html со следующим кодом:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout
from PyQt5.QtWebEngineWidgets import QWebEngineView
class IFace(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(300, 300, 1000, 500)
self.view = WebView(self)
self.setLayout(QGridLayout(self))
self.layout().addWidget(self.view, 0, 0)
self.layout().setContentsMargins(0, 0, 0, 0)
class WebView(QWebEngineView):
def __init__(self, parent):
super().__init__(parent)
self.setHtml("""<html><head></head><body><center>
<h1>Hi!</h1>
<h1>Hi!</h1>
<h1>Hi!</h1>
</body></html>""")
if __name__ == '__main__':
app = QApplication(sys.argv)
w = IFace()
w.show()
sys.exit(app.exec_())
Сначала html отображается правильно, но при изменении размера окна по вертикали отображаемая веб-страница «растягивается» вниз, искажая текст:
Обратите внимание на то, что текст стал выше, но не шире. Текст также перемещается вниз по мере уменьшения окна по вертикали.
Когда я помещаю другой виджет слева от QWebEngineView, например, QLabel, искажение влияет и на QLabel. Если я не включу QWebEngineView, QLabel не будет искажен.
Почему это происходит и как это исправить?
Спасибо.
Обновлено:
Похоже, что это как-то связано с созданием экземпляра QWebEngineView, который имеет окно в качестве родителя, поскольку эффект сохраняется, когда QWebEngineView создается только без размещения, и эффект не сохраняется, когда QWebEngineView создается QWebEngineView() без виджета. как родитель.
Спасибо за данные. У меня такая же версия (удаленная и переустановленная на всякий случай) на ноутбуке с Windows 10.






Эта проблема возникла из-за устаревших драйверов. Я нашел решение (также в stackoverflow) здесь, хотя это было немного другой проблемой (виджеты, скрытые под строкой заголовка, а не искажение QWebEngineView).
Я обновил свой драйвер Intel (R) HD Graphics (вперед, в отличие от указанного в ссылке ответа), и проблема исчезла.
Я не могу воспроизвести это (используя qt-5.10.1 в Linux).