Найти - Пользователи
Полная версия: Прозрачный фон окна QtGui.QMainWindow
Начало » GUI » Прозрачный фон окна QtGui.QMainWindow
1
AliasNameless
В целом задача такая:
Имеется 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_()
В результате test.png - белый квадрат в размер виджета (300,200)

Возможно я чего то перемудрил и есть другие способы добиться прозрачного фона веб содержимого QWebView???
reclosedev
Просто у вас не успевает страница загрузится, поэтому и сохраняется белый квадрат. Нужно повесить обработчик на сигнал 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_()
AliasNameless
Спасибо, никогда бы не додумался!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB