PyQt5 Python 透明 QWebViewEngine

Posted

技术标签:

【中文标题】PyQt5 Python 透明 QWebViewEngine【英文标题】:PyQt5 Python Transparent QWebViewEngine 【发布时间】:2019-03-18 22:33:58 【问题描述】:

我试图让 QWebEngineView 透明。我在网上看到了一些东西,但这会使整个背景透明(即窗口,而不是“图像”)。我正在使用 Qt Designer 和 Python 3。

如果你看这个

您会看到 .png 是透明的,但没有显示默认的黑色背景(IE 实际上是透明的)。我尝试自动填充背景并使用诸如“.setAttribute(Qt.WA_TranslucentBackground, True)”之类的设置,但这又使窗口透明,而不是网页结果。

用户界面文件:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QGridLayout" name="gridLayout">
    <item row="0" column="0">
     <widget class="QWebEngineView" name="webEngineView">
      <property name="url">
       <url>
        <string>http://136.33.26.74/img/Work_In_Progress.png</string>
       </url>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>30</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <customwidgets>
  <customwidget>
   <class>QWebEngineView</class>
   <extends>QWidget</extends>
   <header location="global">QtWebEngineWidgets/QWebEngineView</header>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

py 文件:

from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtWidgets import QMainWindow, QDialog, QTableWidget, QTableWidgetItem, QListWidget, QListWidgetItem, QLabel, QGraphicsPixmapItem, QDockWidget, QSplashScreen
from PyQt5.QtGui import QPixmap
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWebEngineWidgets import QWebEngineView
import os
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        uic.loadUi(str(os.getcwd()) + "\\" + 'ui.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)

    window = MainWindow()
    sys.exit(app.exec_())

致评论者。当我使用与您相同的图像时,我得到 .

【问题讨论】:

我没有发现这个问题:imgur.com/a/xBE6lQN,你能分享你的图片吗 136.33.26.74/img/Work_In_Progress.png 136.33.26.74/img/skull.png 我得到以下信息:imgur.com/a/hcUDzTM 可能是操作系统的问题,我在 ArchLinux 中使用 KDE 作为窗口管理器运行它 我认为这不是操作系统问题。当我使用 Chrome/Opera 查看它时,它可以工作。只是不是 Qt。 【参考方案1】:

这是 QtWebEngine QTBUG-59216 的一个已知错误

【讨论】:

以上是关于PyQt5 Python 透明 QWebViewEngine的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 像素级碰撞检测

PyQt5 图片兼容性问题:"libpng warning: bKGD: invalid.",原因及解决办法。

QWebEngineView 和背景透明度

pyqt5窗口全屏不显示边框

python pyqt5 自定义信号和槽

如何在 PyQt5 中制作自定义 QPushButton?