Qt 不同的QWebView对象为相同的URL生成相同的输出

Qt 不同的QWebView对象为相同的URL生成相同的输出,qt,pyqt,qwebview,Qt,Pyqt,Qwebview,我发现,如果我们用不同的QWebView对象并行加载一个url,我们将得到相同的输出:这个QWebView中只有一个会发出真正的请求。下面是一个例子: from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication from PyQt5.QtWebKitWidgets import QWebView def load_and_print(url): view = QWebView() view.loa

我发现,如果我们用不同的QWebView对象并行加载一个url,我们将得到相同的输出:这个QWebView中只有一个会发出真正的请求。下面是一个例子:

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView

def load_and_print(url):
    view = QWebView()
    view.load(QUrl(url))
    def on_ready(ok):
        print(view.page().mainFrame().documentElement().toPlainText())
    view.loadFinished.connect(on_ready)

if __name__ == '__main__':
    app = QApplication([])

    # This url outputs random number:
    url = 'https://www.random.org/integers/?num=1&min=1&max=100&col=1&base=10&format=plain&rnd=new'
    load_and_print(url)
    load_and_print(url)

    app.exec_()

    # output:
    # 39
    # 39
如果url相同,我们如何为每个QWebView对象获得“公平”的、唯一的输出


PyQt 5.4、windows 7解决方案是禁用缓存:

view.page().settings().setObjectCacheCapacities(0, 0, 0)

您应该指定使用过的Python、PyQt和OS版本。请尝试禁用缓存页面。在C++中,它是通过使用:QWebStase::GualLaStudio()-StimeMaimPaPixCurChanCH(0);72 QWebSettings::globalSettings()->SetObjectCacheCapacity(0,0,0);我相信python中也有类似的东西。@MKarol只是作为一个补充评论(之前被错误地作为答案发布):我在python 3.4.2、PySide 1.2.2(Qt 4.8)、Windows 7上没有看到这种行为,所有64位都是如此,即使ObjectCacheCapacity设置为非零。因此,它可能是特定于实现的。