【发布时间】:2015-02-12 07:11:40
【问题描述】:
我发现如果我们用不同的 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
【问题讨论】:
-
您应该指定使用的 Python、PyQt、操作系统版本。
-
尝试禁用缓存页面。在 C++ 中,它是通过使用:QWebSettings::globalSettings ()->setMaximumPagesInCache (0); 72 QWebSettings::globalSettings ()->setObjectCacheCapacities (0, 0, 0);我相信在 python 中也有类似的东西。
-
@MKarol 正如附加评论(之前错误地发布为答案):我在 Python 3.4.2、PySide 1.2.2 (Qt 4.8)、Windows 7 all 64 bit 上看不到这种行为,即使 objectcachecapacities 设置为非零值。所以它可能是特定于实现的。