IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Comment utiliser QGraphicsDropShadowEffect sur un QLabel ?


Sujet :

PyQt Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Comment utiliser QGraphicsDropShadowEffect sur un QLabel ?
    Bonsoir,

    J'essaie d'appliquer l'effet d'ombre (QGraphicsDropShadowEffect) sur un QLabel pourtant cela ne marche pas !

    Voilà un des methodes que j'ai déjà essaié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    self.shadow = QGraphicsDropShadowEffect(self)
    self.shadow.setBlurRadius(5) # pas forcement necessaire, apparemment 
    self.my_qlabel.setGraphicsEffect(self.shadow)
    Au fait, ce que j'ai besoin n'est pas si complique donc je pourrais simplement créer un second label pour donner quelque sort d'effet mais j'aimerais bien apprendre pourquoi ça ne marche pas.

    Je vous remercie encore et encore !

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Voilà un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # python 2.7
     
    import sys, os
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
            def __init__(self, parent=None):
            super(Fenetre,self).__init__(parent)
            self.resize(400, 300)
     
            self.label = QtGui.QLabel(u"C'est un QLabel!!!", self)
            self.label.setStyleSheet(u"background-color:yellow") 
            ombre = QtGui.QGraphicsDropShadowEffect(self)
            ombre.setBlurRadius(10) # defaut: 1
            ombre.setColor(QtGui.QColor(100,100,100, 180)) #defaut: QtGui.QColor(63, 63, 63, 180)
            ombre.setOffset(4, 4) # defaut: 8,8
            self.label.setGraphicsEffect(ombre)
     
            posit = QtGui.QGridLayout()
            posit.addWidget(self.label, 0, 0)
            posit.setAlignment(self.label, QtCore.Qt.AlignCenter)
            self.setLayout(posit)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    On peut configurer l'ombre:
    - setBlurRadius donne le flou (défaut=1).
    - setColor donne la couleur (défaut=63,63,63,180 => gris avec transparence).
    - setOffset donne le décalage de l'ombre (défaut=8,8)

    A tester pour obtenir l'effet voulu!

    Par ailleurs, il y a un exemple intéressant ici: http://stackoverflow.com/questions/1...16704#14016704: l'ombre n'est plus sous le QLabel mais sous le texte lui-même!

    [Edit] Et c'est encore plus joli avec non pas un texte dans un label, mais une image dans un label. Voilà un petit exemple: il suffit de mettre une image jpg (elle sera redimensionnée).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # python 2.7
     
    import sys, os
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
        def __init__(self, parent=None):
            super(Fenetre,self).__init__(parent)
            self.resize(400, 300)
     
            self.label = QtGui.QLabel(self)
            image = QtGui.QPixmap(u"monimage.jpg")
            image = image.scaledToWidth(200, QtCore.Qt.SmoothTransformation)
            self.label.setPixmap(image)
     
            ombre = QtGui.QGraphicsDropShadowEffect(self)
            ombre.setBlurRadius(20) # defaut: 1
            ombre.setColor(QtGui.QColor(63,63,63, 180)) #defaut: QtGui.QColor(63, 63, 63, 180)
            ombre.setOffset(8, 8) # defaut: 8,8
            self.label.setGraphicsEffect(ombre)
     
            posit = QtGui.QGridLayout()
            posit.addWidget(self.label, 0, 0)
            posit.setAlignment(self.label, QtCore.Qt.AlignCenter)
            self.setLayout(posit)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    [Edit2] Je n'ai pas pu résister: voilà l'exemple de l'ombre derrière un texte! J'ai exploité le lien donné ci-dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # python 2.7
     
    import sys, os
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
        def __init__(self, parent=None):
            super(Fenetre,self).__init__(parent)
            self.resize(400, 300)
     
            self.scene = QtGui.QGraphicsScene(self)
            self.view = QtGui.QGraphicsView(self)
            self.view.setScene(self.scene)
     
            self.text = self.scene.addText("Bonjour!")
            font = QtGui.QFont()
            font.setFamily(u"DejaVu Sans")
            font.setPointSize(20)
            self.text.setFont(font)
     
            ombre = QtGui.QGraphicsDropShadowEffect(self)
            # intensité du flou (defaut: 1)
            ombre.setBlurRadius(10)
            # couleur de l'ombre et niveau de transparence (defaut: QtGui.QColor(63, 63, 63, 180))
            ombre.setColor(QtGui.QColor(63,63,63, 180))
            # décalage de l'ombre (defaut: 8,8)
            ombre.setOffset(4, 4)
     
            self.text.setGraphicsEffect(ombre)
     
            posit = QtGui.QGridLayout()
            posit.addWidget(self.view, 0, 0)
            #posit.setAlignment(self.view, QtCore.Qt.AlignCenter)
            self.setLayout(posit)
     
    #############################################################################
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    C'est chouette, non?
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Comment utiliser usemap sur une image png transparente
    Par master_kb2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/01/2008, 14h00
  2. Réponses: 1
    Dernier message: 27/03/2007, 14h07
  3. [VS2005][NUnit] Comment utiliser Nunit sur un site web
    Par Dadou74 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 31/08/2006, 09h53
  4. Réponses: 7
    Dernier message: 18/04/2006, 17h44
  5. Réponses: 10
    Dernier message: 10/04/2006, 13h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo