QT中webView.load(QUrl)和QNetworkAccessManager.get(Qurl)之间的区别是什么?

时间:2016-06-29 09:12:26

标签: python qt pyqt

更新:我使用javaScriptConsoleMessage并在网站上收到消息:

Can't find variable: jQuery

我在我的项目中使用PyQt。 今天我想将web访问方式从webView.load(QUrl)改为QNetworkAccessManager.get(Qurl),因为webView.load(QUrl)不能使用异步。

如下所示:

之前:

 self.webView.load(QUrl(input_url))

后:

AM = QNetworkAccessManager(parent=self)
self.net_reply= AM.get(net_requests)
AM.finished.connect(self.setweb)

def setweb(self, netreply):
    replyArray = netreply.readAll()
    self.qwebView.page().mainFrame().setContent(replyArray )

更改后,它在大多数网站上运行良好,但在某些网站(例如http://www.china.com.cn)中,视图不太好,就像它们没有css样式一样。如何更改代码以获取像webView.load(QUrl)这样的正确视图?

1 个答案:

答案 0 :(得分:1)

我怀疑问题是setContent()无法加载外部资源(例如CSS),因为您没有使用baseUrl参数告诉QWebView在哪里发出外部请求从。您还可以使用QWebView::setHtml(...)作为不在setContent()中设置MIME类型的快捷方式。