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)
¿Fue útil?

Solución

con la respuesta de gs, esto explica por qué preguntas frecuentes (antes de Qt 4.5) no se puede lograr esto:

FAQ Enlace:

  

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:

Qt :: WA_NoSystemBackground

  

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top