Frage

Ich versuche, den Hintergrund von meinem Fenster transparent zu machen. Aber unter Widgets, die auf sie sind ich sehe Teile meines Desktop-Bild. Jetzt habe ich diese im Konstruktor:

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

    self.setBackgroundRole(QtGui.QPalette.Base)
    self.setAttribute(Qt.WA_NoSystemBackground)
War es hilfreich?

Lösung

Im Anschluss an gs Antwort, diese FAQ erklärt, warum (vor Qt 4.5) Sie können dies nicht erreichen:

FAQ Link:

  

Es gibt keine direkte Unterstützung für Teil   Transparenz, wo das Fenster   transparent und die Widgets auf sie sind   nicht in Qt.

Denken Sie daran, PyQt die neueste Version gegen Qt 4.4 erstellt wurde und so nicht das halbtransparente Fenster unterstützt Sie wünschen. gs der andere Antwort, über setAutoFillBackground (True) funktionieren würde, wenn Sie die Hintergrundfarbe des Hauptfensters auf etwas anderes als transparente Einstellung wurden.

Auch hierzu finden Sie in der Dokumentation zu Qt.WA_NoSystemBackground, sagt es Ihnen nicht auf dem transparenten Effekt abhängen können, die Sie bisher hatte:

Qt :: WA_NoSystemBackground

  

Gibt an, dass das Widget nicht hat   Hintergrund, das heißt, wenn das Widget   empfängt Farbe Ereignisse, der Hintergrund   wird nicht automatisch neu gestrichen. Hinweis:   Im Gegensatz zu WA_OpaquePaintEvent, neu   belichteten Bereiche werden nie gefüllt mit   Hintergrund (z.B nach einem zeigt,   Fenster zum ersten der Benutzer Zeit kann   siehe „bis“ es bis zur Anwendung   verarbeitet die Farbe Ereignisse). Das ist   Set / durch die Widget-Autor gelöscht.

Andere Tipps

Ich habe gerade dieses :

  

Erstellen transparente Fenster

     

Da Qt 4.5 ist es möglich gewesen,   erstellen Fenster mit lichtdurchlässigem   Regionen auf Fenstersystemen, die Unterstützung   Compositing.

     

diese Funktion in einem Top-Level aktivieren   widget, setzen Sie seine   Qt :: WA_TranslucentBackground Attribut   mit setAttribute () und sorgen dafür, dass   ihr Hintergrund gemalt mit   Nicht-opake Farben in den Regionen, die Sie   will teilweise transparent sein.

PyQt ist noch Qt 4.4, vielleicht ist das das Problem ist.

Versuchen Sie dies für Ihre Widgets:

widget.setAutoFillBackground(True)

Ich glaube, Sie auch in dem Qt-Designer einstellen könnten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top