PyQt4.QtWebKit + прозрачность фона - PullRequest
2 голосов
/ 06 апреля 2011

Если у вас есть менеджер окон композитинга, это даст вам прозрачное окно:

import PyQt4.QtGui
a = PyQt4.QtGui.QApplication([])
import PyQt4.QtCore
import PyQt4.QtWebKit
w = PyQt4.QtWebKit.QWebView()
w.setAttribute(PyQt4.QtCore.Qt.WA_TranslucentBackground)
w.show()
a.exec_()

Но у этого не будет прозрачного окна:

import PyQt4.QtGui
a = PyQt4.QtGui.QApplication([])
import PyQt4.QtCore
import PyQt4.QtWebKit
w = PyQt4.QtWebKit.QWebView()
w.setAttribute(PyQt4.QtCore.Qt.WA_TranslucentBackground)
w.page().currentFrame().documentElement().setInnerXml("text")
w.show()
a.exec_()

Я хочу, чтобы текст располагался поверх фона ... Это возможно?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2011

Это похоже на работу:

from PyQt4 import QtGui, QtWebKit
from PyQt4.QtCore import Qt
a = QtGui.QApplication([])
view = QtWebKit.QWebView()
view.setAttribute(Qt.WA_TranslucentBackground)
# Works with and without that following line
view.setAttribute(Qt.WA_OpaquePaintEvent, False)
page = view.page()
palette = page.palette()
palette.setBrush(QtGui.QPalette.Base, Qt.transparent)
page.setPalette(palette)
page.currentFrame().documentElement().setInnerXml("text")
view.show()
a.exec_()

Источник: http://labs.qt.nokia.com/2009/06/30/transparent-qwebview-or-qwebpage/

0 голосов
/ 06 апреля 2011

Проблема здесь в ленивом воплощении. Изначально представление WebKit не создается, и вы получаете прозрачный фон. Как только вы получаете доступ к w.page(), представление WebKit фактически создается, и появляется белый фон по умолчанию. Я не знаю ни одного способа получить прозрачность из представления WebKit; может быть способ, но это не "нормальные вещи в сети". Например, w.page().currentFrame().documentElement().setInnerXml('<style>html,body{background:transparent}</style>') не помогает: по умолчанию белый цвет отображается под прозрачностью.

Возможная помощь: Можно ли визуализировать веб-контент на чистом фоне с помощью WebKit?

...