我在解决程序问题时遇到问题。当我创建一个包含其他小部件的透明小部件时,它们也变得透明,我不明白为什么。
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。
编辑:
答案 0 :(得分:2)
我相信你正在寻找这个:
id = (int) x;
根据您的示例改编的完整代码是:
self.setAttribute(Qt.WA_TranslucentBackground)
,结果如下:
如果您想只有一些透明度,可能需要像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_()
。