PyQt - fondo transparente
-
12-09-2019 - |
Pregunta
Trato de hacer que el fondo de mi ventana transparente. Pero bajo los widgets que están en él veo partes de mi escritorio-imagen. Ahora tengo este en el constructor:
self.setFocusPolicy(Qt.StrongFocus) self.setAttribute(Qt.WA_QuitOnClose,True) self.setBackgroundRole(QtGui.QPalette.Base) self.setAttribute(Qt.WA_NoSystemBackground)
Solución
con la respuesta de gs, esto explica por qué preguntas frecuentes (antes de Qt 4.5) no se puede lograr esto:
No hay apoyo directo a parcial transparencia, donde la ventana es transparentes y los widgets de dicho módulo se no en Qt.
Recuerde, la versión más reciente de PyQt fue creado en contra de Qt 4.4, y por lo tanto no es compatible con la ventana semitransparente que desee. otra respuesta de GS, sobre setAutoFillBackground (Verdadero) funcionaría si se configura el color de fondo de la ventana principal para que no sea transparente nada.
Además, consulte la documentación de Qt.WA_NoSystemBackground, se dice que no puede depender del efecto de transparencia que ha tenido hasta ahora:
Indica que el widget no tiene fondo, es decir, cuando el widget recibe eventos de pintura, el fondo No está pintado de forma automática. Nota: A diferencia de WA_OpaquePaintEvent, recién áreas expuestas no están llenos el fondo (por ejemplo después de mostrar una ventana por primera vez que el usuario puede ver "a través de" hasta que la aplicación procesa los eventos de pintura). Esto es SET / borrado por el autor del widget.
Otros consejos
Me acabo de encontrar este :
Creación translúcido de Windows
Desde Qt 4.5, ha sido posible crear ventanas translúcidas con regiones en los sistemas de ventanas que apoyan de composición.
Para activar esta función en un alto nivel flash, establecer su atributo Qt :: WA_TranslucentBackground con setAttribute () y asegurar que su fondo está pintado con colores no opacos en las regiones que querer ser parcialmente transparente.
PyQt es todavía Qt 4.4, tal vez ese es el problema.
Probar para sus widgets:
widget.setAutoFillBackground(True)
Creo que también se podría establecer en el Qt Designer.