У меня есть приложение, которое отображает веб-страницу в iframe, а затем загружает X изображений в div, который перекрывает фрейм.
Итак, у меня есть этот скрипт на python, который загружает URL и делает снимок экрана. Он работает на обычных веб-страницах, но я думаю, что фрейм отбрасывает его. Ниже мой код и ссылка на скриншот, который он берет.
#!/usr/bin/env python
import sys
import signal
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import QWebPage
def onLoadFinished(result):
if not result:
print "Request failed"
sys.exit(1)
#screen = QtGui.QDesktopWidget().screenGeometry()
size = webpage.mainFrame().contentsSize()
# Set the size of the (virtual) browser window
webpage.setViewportSize(webpage.mainFrame().contentsSize())
# Paint this frame into an image
image = QImage(webpage.viewportSize(), QImage.Format_ARGB32)
painter = QPainter(image)
webpage.mainFrame().render(painter)
painter.end()
image.save("/var/www/html/output.png")
sys.exit(0)
qtargs = [sys.argv[0]]
qtargs.append("-display")
qtargs.append(":0")
app = QApplication(qtargs,True)
#app = QApplication(sys.argv)
signal.signal(signal.SIGINT, signal.SIG_DFL)
webpage = QWebPage()
webpage.mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff)
webpage.mainFrame().setScrollBarPolicy(Qt.Vertical, Qt.ScrollBarAlwaysOff)
webpage.connect(webpage, SIGNAL("loadFinished(bool)"), onLoadFinished)
webpage.mainFrame().load(QUrl("http://localhost/heatmap"))
sys.exit(app.exec_())
Снимок экрана сделан:
http://img28.imageshack.us/img28/7506/outputc.png
Как вы можете видеть на изображении выше, страница сжимается в маленькое изображение с полосами прокрутки, при этом не отображается вся страница с iframe и div сверху. Нужно ли каким-то образом загружать таблицы стилей или заставлять их отображаться так, как это делается в браузере? Qt.ScrollbarAlwaysOff, похоже, не работает в моем случае. «Текст-заполнитель» является частью веб-страницы, и изображение делает его серым с голубой самодовольной и цветной клавишей в левом верхнем углу.
Когда я печатаю содержимое webpage.mainFrame (). ContentsSize () для моего приложения, я получаю
PyQt4.QtCore.QSize (400, 158)
Но когда я рендерил что-то вроде www.google.com, я получаю
PyQt4.QtCore.QSize (617, 573)
Так что что-то не загружается должным образом, чтобы испортить содержимоеSize (). Идеи о том, где я ошибся?