Форум сайта python.su
В целом задача такая:
Имеется QMainWindow с единственным виджетом QWebView
Нужно:
1. Загрузить отрисованное веб содержимое из QWebView в QPixmap (например QPixmap.grabWidget)
2. Сделать из QPixmap маску с прозрачным белым цветом (QPixmap.createMaskFromColor)
3. Наложить маску на веб содержимое
Таким образом должно получится окно с QWebView в котором белый фон - прозрачный.
Я споткнулся на первом этапе:
#!/usr/bin/python # -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui, QtWebKit app = QtGui.QApplication(sys.argv) mw = QtGui.QMainWindow() web = QtWebKit.QWebView(mw) web.load(QtCore.QUrl.fromLocalFile("C:/Python27/prog/test.html")) web.resize(300,200) mw.show() pix = QtGui.QPixmap() pix=pix.grabWidget(web) pix.save("test.png") app.exec_()
Отредактировано AliasNameless (Май 10, 2012 15:18:57)
Офлайн
Просто у вас не успевает страница загрузится, поэтому и сохраняется белый квадрат. Нужно повесить обработчик на сигнал loadFinished:
... def on_load_finished(ok): pix = QtGui.QPixmap.grabWidget(web) pix.save("test.png") web.loadFinished.connect(on_load_finished) mw.show() app.exec_()
Офлайн
Спасибо, никогда бы не додумался!
Офлайн