PyQt5:调整大小时的QWebEngineView失真

时间:2018-04-14 21:44:54

标签: python python-3.x pyqt pyqt5 qwebengineview

我有一个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,但垂直调整窗口大小会导致显示的网页向下“拉伸”,扭曲文字:

调整大小之前: Unstretched WebEngineView

调整大小后: Stretched WebEngineView

注意文本如何更高,但不是更宽。当窗口垂直收缩时,文本也会向下移动。

当我在QWebEngineView的左侧放置另一个小部件时,例如QLabel,失真也会影响QLabel。如果我不包含QWebEngineView,则QLabel不会失真。

为什么会发生这种情况,我该如何解决?

感谢。

更新

它似乎与将窗口作为父窗口的QWebEngineView的实例化有关,因为当QWebEngineView仅创建未放置时效果仍然存在,并且效果不会<{1}}由QWebEngineView实例化而没有将小部件作为父级时保留。

1 个答案:

答案 0 :(得分:0)

由于驱动程序过时而发生此问题。我找到了解决方案(也在stackoverflow上)here,尽管它是一个稍有不同的问题(小部件隐藏在标题栏下方,而不是QWebEngineView的变形)。

我更新了我的Intel®HD Graphics驱动程序(向前,与链接中列出的答案不同),问题消失了。