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

时间:2016-05-30 16:36:03

标签: python 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): enter image description here 这是我需要的(没有透明按钮和透明的QWidget): enter image description here 非常感谢你。

1 个答案:

答案 0 :(得分:2)

我相信你正在寻找这个:

id = (int) x;

根据您的示例改编的完整代码是:

self.setAttribute(Qt.WA_TranslucentBackground)

,结果如下:

transparent QWidget

如果您想只有一些透明度,可能需要像this example中那样重写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_()