我对PyQt/它的Webview有问题。困扰我的代码应该呈现图表,但事实并非如此。我使用的是Highcharts框架,并为通过Python呈现图表的javascript函数提供数据。我还检查webview是否准备好了,因为这是我以前的错误。相关代码如下所示:
command = ('loadPinch(' + str(random.sample(range(10000), 1000)) +
', ' + str(['2009', '01', '01']) + ');')
self.webview.page().mainFrame().evaluateJavaScript("""
var readyStateCheckInterval = setInterval(function() {
if(document.readyState === 'complete'){ """ +
command + """
clearInterval(readyStateCheckInterval);
}
}, 10);""")
loadPinch是一个JavaScript函数,看起来与此类似(这反过来又类似于一个Highcharts示例图):
^{pr2}$我可能会告诉您,如果我打印将evaluateJavaScript传递给控制台的命令,而不是执行它并将其粘贴到开发人员控制台,它将按预期执行并呈现图表,这使我相信存在某种我无法跟踪的争用条件。在
有人知道问题出在哪里吗?在
谨致问候, 卡森
注意:问题仍然相关。在
我最终找到了我的解决方案;我在JS术语中想得太多了。在
QT中有一个在页面加载完成时发出的信号,称为
loadFinished()
。通过将这个信号绑定到我的一个执行evaluateJavascript(command)
调用的插槽,图表就加载了。似乎qtswebview在页面还没有完成加载时执行Javascript有问题。在总之,代码是这样的(简化):
请注意这是如何简化JS代码的;我不必检查站点是否已加载,因为在发出信号后,它必须准备就绪。在
尽管如此,我还是对他大加赞赏,因为他把我带到了正确的轨道上。我已经放弃了。在
相关问题 更多 >
编程相关推荐