PyQt 等待页面加载完成
我想在页面完全加载后把内容保存为图片,但有时候输出的图像没有完全渲染出来。
代码:
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函数)来获取谷歌地图(640x640像素)。
1 个回答
1
我不太确定这是否可行。对于一个静态网站来说,这可能行得通,但谷歌地图是动态加载地图块的,我怀疑它是否会发出一个可用的“我完成了”的信号。
不过,看起来你只是想要一张谷歌地图的图片?你有没有查看过他们的API?他们允许你通过构建一个网址来生成静态地图。
举个例子
http://maps.google.com/maps/api/staticmap?center=Brooklyn+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