使用 PyQt4 显示 HTML 页面时出错 - QWebView

Posted

技术标签:

【中文标题】使用 PyQt4 显示 HTML 页面时出错 - QWebView【英文标题】:Error displaying HTML Pages using PyQt4 - QWebView 【发布时间】:2016-06-30 12:32:52 【问题描述】:

根据以下 SO 文章:How to display html using QWebView. Python?

我通过 Andrean 修改了以下代码:

import sys
from PyQt4.QtGui import QApplication
from PyQt4.QtCore import QUrl
from PyQt4.QtWebKit import QWebView

class Browser(QWebView):

    def __init__(self):
        QWebView.__init__(self)
        self.loadFinished.connect(self._result_available)

    def _result_available(self, ok):
        frame = self.page().mainFrame()
        # print(unicode(frame.toHtml()).encode('utf-8'))

if __name__ == '__main__':
    app = QApplication(sys.argv)
    view = Browser()
    view.load(QUrl('http://www.google.com'))
    view.show()
    app.exec_()

但是,由于某种奇怪的原因,我仍然无法在我的 GUI 窗口中查看 Google。我在下面看到以下屏幕(尽管等待了 5 分钟并且有完整的互联网连接)

See screenshot here

更重要的是,我正在尝试查看使用 Bokeh 生成的离线 HTML 文件。

from bokeh.plotting import figure, output_file, show

# prepare some data
x = [1, 2, 3, 4, 5]
y = [6, 7, 2, 4, 5]

# create a new plot with a title and axis labels
p = figure(title="simple line example", x_axis_label='x', y_axis_label='y')

# add a line renderer with legend and line thickness
p.line(x, y, legend="Temp.", line_width=2)

# show the results
show(p)

用离线 html 文件适当地替换 GUI 脚本:

htmlPath = QUrl('line_example.html')
view.load(htmlPath)

我仍然看不到我生成的 HTML 文件 - 显示与以前相同的空白窗口。

我也尝试过如下定义 htmlPath 但它们仍然不起作用:

htmlPath = QUrl("file:///C:/Users/giranm/PycharmProjects/Dashboard%20Testing/lineGraph.html")

htmlPath = QUrl.fromLocalFile(QFileInfo("lineGraph.html").absoluteFilePath())

非常感谢您为上述工作提供任何帮助。

【问题讨论】:

【参考方案1】:

请看这个答案:Bokeh plots do not display in QWebView

TLDR:显然 QWebView 不会运行加载 BokehJS 所需的 <script> 标记(这是实际执行所有渲染工作的 javascript 库)内联资源 可能选项,但请注意 QwebView 不会以任何有意义的方式被 Bokeh 视为“支持”。

【讨论】:

以上是关于使用 PyQt4 显示 HTML 页面时出错 - QWebView的主要内容,如果未能解决你的问题,请参考以下文章

在页面上显示 html 内容时出错

在表单中显示 html 页面(连接到流时出错)

显示div直到到达页面底部时出错

PyQt4显示提示信息

PyQt4:我的数据库显示空单元格

PyQt4关闭窗口