Max*_*ony 4 python flash macos qt pyqt
我正在使用PyQt(作为Python初学者).我需要能够在无头系统上截取网站的屏幕截图.我之前使用的是PhantomJS用于另一个项目,但他们在1.5中删除了Flash支持,我不想依赖于我的新项目弃用的1.4版本.
所以我正在使用PyQt自己做我的东西.我可以用一个给定的网址截取一个网站的截图,没问题.
但我一直在Flash占位符上有"蓝色骰子"flash插件图标(是的,javascript和插件被激活)
self.settings.setAttribute(QtWebKit.QWebSettings.PluginsEnabled,True)
self.settings.setAttribute(QtWebKit.QWebSettings.JavascriptEnabled,True)
Run Code Online (Sandbox Code Playgroud)
我正在Youtube视频页面上进行一些测试,这是我的问题的一个例子:
第二部分,可能与第一部分有关:如何告诉PyQt在拍摄截图之前等待几秒钟?正如您在示例中看到的那样,右侧的图像仍然被卸载,因为它们是使用javascript和data属性加载的,在我的脚本中,我在loadFinished信号(onLoad()等效的javascript)上截取屏幕截图.
我的第一个猜测就是
time.sleep(2)
Run Code Online (Sandbox Code Playgroud)
在调用我的捕获方法之前,它不起作用.我假设在这个休眠时间内Webkit加载也处于睡眠状态,防止在页面上加载任何内容.
我试图创建一个自定义信号,但后来我仍然不知道如何在不睡觉的情况下触发它.
我的最后一个猜测是我需要线程化我的应用程序.我对吗?
如果您有任何提示/脚本来帮助我显示Flash内容和/或添加类似信号的setTimeout,我将非常感激!
在此先感谢您的帮助.
编辑: 只需快速编辑即可添加我的解决方案:
timeoutTimer = QTimer()
timeoutTimer.setInterval(3000) # wait for 3secs
timeoutTimer.setSingleShot(True)
timeoutTimer.timeout.connect(theMethodToCallOnTimeout)
Run Code Online (Sandbox Code Playgroud)
关于flash事物:看起来像OSX上的flash播放器坏了(可能与32/64位问题有关).
小智 5
如果time.sleep
你是冻结整个应用程序,而不是,您可以使用QTimer
,QEventLoop
,QThread
等这里是PyQt4的版本:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
class browser(QWebView):
def __init__(self, parent=None):
super(browser, self).__init__(parent)
self.timerScreen = QTimer()
self.timerScreen.setInterval(2000)
self.timerScreen.setSingleShot(True)
self.timerScreen.timeout.connect(self.takeScreenshot)
self.loadFinished.connect(self.timerScreen.start)
self.load(QUrl("http://www.google.com/ncr"))
def takeScreenshot(self):
image = QImage(self.page().mainFrame().contentsSize(), QImage.Format_ARGB32)
painter = QPainter(image)
self.page().mainFrame().render(painter)
painter.end()
image.save(self.title() + ".png")
sys.exit()
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
main = browser()
app.exec_()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5544 次 |
最近记录: |