pyqt5 HTML窗口不显示

Posted

技术标签:

【中文标题】pyqt5 HTML窗口不显示【英文标题】:pyqt5 HTML window not displaying 【发布时间】:2019-05-15 09:48:34 【问题描述】:

我写完这段代码后,窗口没有显示,但控制台消息显示在终端中

我尝试添加一些额外的 pyqt5 导入语句,但没有任何效果

class MyPage(QWebEnginePage):
    def __init__(self, parent=None):
        super(MyPage, self).__init__(parent)
    def triggerAction(self, action, checked=False):
        if action == QWebEnginePage.OpenLinkInNewWindow:
            self.createWindow(QWebEnginePage.WebBrowserWindow)

        return super(MyPage, self).triggerAction(action, checked)


class MyWindow(QtWebEngineWidgets.QWebEngineView):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.myPage = MyPage(self)

        self.setPage(self.myPage)

    def createWindow(self, windowType):
        if windowType == QWebEnginePage.WebBrowserTab:
            self.webView = MyWindow()
            self.webView.setAttribute(Qt.WA_DeleteOnClose, True)
            self.webView.show()
            return self.webView
        return super(MyWindow, self).createWindow(windowType)


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()
    main.load(QUrl("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_a_target"))

    sys.exit(app.exec_())

需要知道确切的导入语句并显示查看 HTML 的窗口。

【问题讨论】:

能否添加您收到的错误信息? 见***.com/questions/54920726/… 【参考方案1】:

QWebEngineView 的大小有一个bug,有手动设置大小的解决方案:

from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets


class MyPage(QtWebEngineWidgets.QWebEnginePage):
    def triggerAction(self, action, checked=False):
        if action == QtWebEngineWidgets.QWebEnginePage.OpenLinkInNewWindow:
            self.createWindow(
                QtWebEngineWidgets.QWebEnginePage.WebBrowserWindow
            )
        return super(MyPage, self).triggerAction(action, checked)


class MyWindow(QtWebEngineWidgets.QWebEngineView):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.myPage = MyPage(self)
        self.setPage(self.myPage)

    def createWindow(self, windowType):
        if windowType == QtWebEngineWidgets.QWebEnginePage.WebBrowserTab:
            webView = MyWindow(self)
            webView.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
            webView.resize(640, 480) # <----
            webView.show()
            return webView
        return super(MyWindow, self).createWindow(windowType)


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setApplicationName("MyWindow")

    main = MyWindow()
    main.resize(640, 480) # <----
    main.show()
    main.load(
        QtCore.QUrl(
            "https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_a_target"
        )
    )

    sys.exit(app.exec_())

【讨论】:

以上是关于pyqt5 HTML窗口不显示的主要内容,如果未能解决你的问题,请参考以下文章

使用 move() 方法 PyQt5 时 QPushButon 不显示

PyQt5如何在一个窗口中显示不同的页面?

简单的 PyQt5 教程不显示菜单栏

PyQt5 - 显示来自不同类的 QDialog

PyQt5 PushButton 未显示

pyqt5+QWebEngine窗口图形无法显示解决方案