PyQt4.QtWebKit+背景透明度

2024-09-28 22:58:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如果有合成窗口管理器,这将为您提供一个透明窗口:

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_()

但这不会有一个透明的窗口:

^{pr2}$

我想让文字漂浮在背景上。。。这可能吗?在


Tags: import管理器showqtexecpyqt4waqtgui
2条回答

这似乎有效:

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/

这里的问题是延迟实例化。最初,WebKit视图没有实例化,因此您可以获得一个透明的背景。一旦您访问w.page(),WebKit视图实际上是实例化的,因此默认的白色背景就会出现。我不知道从WebKit视图中获得透明性的任何方法;可能有一种方法,但这不是“普通的web内容”。例如,w.page().currentFrame().documentElement().setInnerXml('<style>html,body{background:transparent}</style>')没有帮助:默认的白色呈现在透明下面。在

可能的帮助:Is it possible to render web content over a clear background using WebKit?

相关问题 更多 >