Pergunta

Eu tento fazer o fundo da minha janela transparente. Mas, sob os widgets que estão nele i ver partes de meu desktop-imagem. Agora eu tenho isso no construtor:

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

    self.setBackgroundRole(QtGui.QPalette.Base)
    self.setAttribute(Qt.WA_NoSystemBackground)
Foi útil?

Solução

Na sequência da resposta da GS, este FAQ explica porque (antes Qt 4.5) você não pode conseguir isso:

FAQ Link:

Não há suporte direto para parcial transparência, onde a janela é transparente e os widgets em que são não em Qt.

Lembre-se, a versão mais recente do PyQt foi criado contra o Qt 4.4, e assim não suporta a janela semi-transparente que você deseja. outra resposta da GS, sobre setAutoFillBackground (True) iria funcionar se você estivesse definindo a cor de sua janela principal do fundo a qualquer coisa que não seja transparente.

Além disso, consulte a documentação para Qt.WA_NoSystemBackground, ele diz que você não pode depender do efeito transparente que até agora tinha:

Qt :: WA_NoSystemBackground

Indica que o widget não tem fundo, ou seja, quando o widget recebe eventos de pintura, o fundo não é redesenhada automaticamente. Nota: Ao contrário WA_OpaquePaintEvent, recém áreas expostas nunca são preenchidos com o plano de fundo (por exemplo, depois de mostrar um janela para a primeira vez que o usuário pode ver "através"-lo até que o aplicativo processa os eventos de pintura). Isto é set / afastada pelo autor do widget.

Outras dicas

Eu apenas encontrei este :

Criando translúcido do Windows

Desde Qt 4.5, tem sido possível criar janelas com translúcido regiões em sistemas de janela que o apoio composição.

Para ativar esse recurso em um de nível superior widget, definir o seu atributo Qt :: WA_TranslucentBackground com setAttribute () e assegurar que seu fundo é pintado com cores não opaco nas regiões você quer ser parcialmente transparente.

PyQt ainda é Qt 4.4, talvez seja o problema.

Tente isto para seus widgets:

widget.setAutoFillBackground(True)

Eu acho que você também pode configurá-lo no Qt Designer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top