PyQt 等到页面加载完毕
Posted
技术标签:
【中文标题】PyQt 等到页面加载完毕【英文标题】:PyQt wait until page has loaded 【发布时间】:2011-02-11 13:13:49 【问题描述】:我想在图像完全加载时将页面内容保存到图像中,但有时我得到的输出光栅未完全呈现。
代码:
import sys
import signal
import os
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage
app = QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
webpage = QWebPage()
def onLoadFinished(result):
if not result:
print "Request failed"
sys.exit(1)
webpage.setViewportSize(webpage.mainFrame().contentsSize())
image = QImage(webpage.viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
webpage.mainFrame().render(painter)
painter.end()
if os.path.exists("output.png"):
os.remove("output.png")
image.save("output.png")
sys.exit(0) # quit this application
webpage.mainFrame().load(QUrl("file:///page.html"))
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished)
sys.exit(app.exec_())
页面正在使用 javascript (onload function) 获取 google map (640x640px)。
图片:http://i56.tinypic.com/15ojg3s.png
【问题讨论】:
相关:How to know when a web page is loaded when using QtWebKit? 【参考方案1】:我不确定这是否可能。对于静态网站,这可能可行,但谷歌地图会动态加载图块,我怀疑它会发出一个有用的“我完成了”信号。
但您似乎只想要一张 Google 地图的图片?你看过他们的 API 吗?它们允许您通过建立一个 URL 来generate static maps。
例子
http://maps.google.com/maps/api/staticmap?center=***lyn+Bridge,New+York,NY&zoom=14&size=512x512&maptype=roadmap &markers=color:blue|label:S|40.702147,-74.015794&markers=color:green|label:G|40.711614,-74.012318 &markers=color:red|color:red|label:C|40.718217,-73.998284&sensor=false
【讨论】:
不幸的是,静态地图不适合我想要实现的目标 - 我已经尝试过了。可能我会试试这个:openlayers.org/dev/examples/layerLoadMonitoring.html。还是谢谢你的帮助以上是关于PyQt 等到页面加载完毕的主要内容,如果未能解决你的问题,请参考以下文章
$(document).ready和window.onload的区别