我在Linux下用Python开发了一个程序,一切正常,但不在Windows中。我在W10上。
我有一个带Pyside Qt的窗口,左边是一个框架,在灰色背景上有Qpushbutton,在严格上,一个png图像为空,以获得半透明背景。我通过可视化背面的其他窗口来使用它来绘制该区域中的点。
这是我的代码
def initUI(self):
# Taille Fenêtre
self.resize(500, 500)
# Centrage + plein ecran
size_ecran = QDesktopWidget().screenGeometry()
size_fenetre = self.geometry()
self.move((size_ecran.width()-size_fenetre.width())/2, (size_ecran.height()-size_fenetre.height())/2)
# self.resize(size_ecran.width(), size_ecran.height())
hbox = QHBoxLayout(self)
vbox1 = QVBoxLayout()
vbox2 = QVBoxLayout()
self._frameLeft = QFrame(self)
self._frameLeft.setFrameShape(QFrame.StyledPanel)
# Calcul Courbe
self._btnCurve = QPushButton(listeNameButton[0])
self._btnCurve.setIcon(QIcon('ico/curve.png'))
self._btnCurve.setIconSize(QSize(55,55))
self._btnCurve.clicked.connect(self.evtCurve)
vbox1.addWidget(self._btnCurve)
这适用于Linux(Ubuntu),而不适用于Windows:正确的部分是黑色。 我尝试使用self.opacityWindow,它可以工作,但整个窗口不仅是右侧的半透明。你有什么想法吗?
由于
# Transparence
size_fenetre = self.geometry()
size_button = self._btnCurve.geometry()
self._frameLeft.setStyleSheet("background-color:grey;")
self._frameLeft.setStyleSheet("border: none;")
self._frameLeft.setGeometry(0,0,size_button.width()+50, size_fenetre.height())
self._draw = QLabel(self)
self._drawempty = QPixmap("ico/imgvide.png")
self._drawempty =self._drawempty.scaled((size_button.width())*1.5,size_fenetre.height())
self._draw.setStyleSheet("background:transparent;")
self._draw.setPixmap(self._drawempty)
vbox2.addWidget(self._draw)
hbox.addLayout(vbox1)
hbox.addLayout(vbox2)
self.setLayout(hbox)
self.setAttribute(Qt.WA_TranslucentBackground)
我只是一个带有Qt.WA_TranslucentBackground的blackbackground,而不是半透明的。如何管理?