Question

J'essaie de rendre le fond transparent de ma fenêtre. Mais sous les widgets qui sont sur ce que je vois certaines parties de mon bureau image. Maintenant, j'ai ce dans le constructeur:

    self.setFocusPolicy(Qt.StrongFocus)
    self.setAttribute(Qt.WA_QuitOnClose,True)

    self.setBackgroundRole(QtGui.QPalette.Base)
    self.setAttribute(Qt.WA_NoSystemBackground)
Était-ce utile?

La solution

Suite à la réponse de gs, cette FAQ explique pourquoi (avant Qt 4.5) vous ne pouvez pas y parvenir:

FAQ Lien:

  

Il n'y a pas un soutien direct pour partiel   la transparence, où la fenêtre est   transparent et les widgets sur celui-ci sont   pas dans Qt.

Rappelez-vous, la version la plus récente de PyQt a été créé contre Qt 4.4, et ainsi ne supporte pas la fenêtre semi-transparente vous désirez. autre réponse gs, au sujet setAutoFillBackground (vrai) fonctionnerait si vous définissez la couleur de fond de votre fenêtre principale pour autre chose que transparent.

En outre, consultez la documentation Qt.WA_NoSystemBackground, il dit que vous ne pouvez pas dépendre de l'effet transparent que vous avez eu jusqu'à présent:

Qt :: WA_NoSystemBackground

  

Indique que le widget n'a pas   arrière-plan, à savoir lorsque le widget   reçoit des événements de peinture, l'arrière-plan   est pas automatiquement repeint. Remarque:   Contrairement à WA_OpaquePaintEvent, nouvellement   les zones exposées ne sont jamais remplis   l'arrière-plan (par exemple, après avoir affiché un   fenêtre pour la première fois, l'utilisateur peut   voir « à travers » jusqu'à ce que l'application   traite les événements de peinture). C'est   défini / par l'auteur du widget.

Autres conseils

Je viens de trouver cette :

  

Création d'Translucide de Windows

     

Depuis Qt 4.5, il a été possible de   créer des fenêtres avec translucide   régions sur les systèmes de fenêtres qui soutiennent   compositing.

     

Pour activer cette fonctionnalité dans un haut niveau   widget définir sa   attribut Qt :: WA_TranslucentBackground   avec setAttribute () et faire en sorte que   son arrière-plan est peint avec   couleurs non opaques dans les régions que vous   veulent être partiellement transparent.

PyQt est encore Qt 4.4, peut-être que le problème est.

Essayez ceci pour vos widgets:

widget.setAutoFillBackground(True)

Je pense que vous pouvez également définir ce paramètre dans le Qt Designer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top