簡體   English   中英

透明框架pyqt5中的透明小部件

[英]transparent widgets inside transparent frame pyqt5

我在解決程序問題時遇到問題。 當我創建一個包含其他小部件的透明小部件時,它們也變得透明,我不明白為什么。

from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt

class MainFrame(QtWidgets.QWidget):

    def __init__(self, parent=None):
        super(MainFrame, self).__init__(parent)

        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setFixedSize(860, 560)

        # Set the opacity
        self.setWindowOpacity(1 - 50 / 100)

        layout = QtWidgets.QHBoxLayout(self)

        layout.addWidget(QtWidgets.QPushButton("TEST"))

在此示例代碼中,小部件QPushButton將顯示為透明,與標簽和其他小部件相同。 我如何僅將透明性應用於我的類MainFrame。

編輯:

這是我所擁有的(透明按鈕和透明QWidget): 在此處輸入圖片說明 這是我需要的(沒有透明按鈕和透明QWidget): 在此處輸入圖片說明 非常感謝你。

我相信您正在尋找:

self.setAttribute(Qt.WA_TranslucentBackground)

從您的示例改編的完整代碼是這樣的:

import sys
from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt

class MainFrame(QtWidgets.QWidget):

    def __init__(self, parent=None):
        super(MainFrame, self).__init__(parent)

        self.setWindowFlags(Qt.FramelessWindowHint)
        self.setFixedSize(860, 560)

        # Set the opacity
        #self.setWindowOpacity(1 - 50 / 100)

        layout = QtWidgets.QHBoxLayout(self)

        layout.addWidget(QtWidgets.QPushButton("TEST"))

        self.setAttribute(Qt.WA_TranslucentBackground)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    Frame = MainFrame(None)
    Frame.show()
    app.exec_()

,結果是這樣的:

透明的QWidget

如果只希望具有一定的透明度,則可能需要像此示例一樣重寫paintEvent

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM