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 :

background d'une widget


Sujet :

PyQt Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Points : 26
    Points
    26
    Par défaut background d'une widget
    Bonjour,
    je voudrais mettre une image en arrière plan d'une widget mais j'ai un problème de dimension de l'image comme sur l'image ci-dessous:
    Nom : AAa.PNG
Affichages : 2513
Taille : 231,4 Ko
    je voudrais que l'image se grandis avec l'interface. voila mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    palette = QPalette()
    palette.setBrush(QPalette.Background,QBrush(QImage("bg.jpg")))
    Dialog.setPalette(palette)

  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,

    Je ne sais pas s'il existe une solution plus élégante, mais voilà comment je fais pour que l'image de fond "suive" le redimensionnement de la fenêtre.

    Pour essayer (Python 3, PyQt5), il te faudra changer le nom de l'image dans le main.

    Concernant le redimensionnement de l'image, il y a plusieurs solutions qui sont toutes décrites dans le code:
    - redimensionner selon la largeur avec conservation du ratio de l'image
    - redimensionner selon la hauteur avec conservation du ratio de l'image
    - redimensionner selon la largeur et la hauteur sans conservation du ratio de l'image (en général, ça produit une déformation) => c'est ça que j'ai choisi pour ce code.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python 3
     
    import sys
     
    from PyQt5 import (QtWidgets, QtGui, QtCore)
     
    #############################################################################
    class Dialog(QtWidgets.QDialog):
     
        #========================================================================
        def __init__(self, image, parent=None):
            super().__init__(parent)
     
            self.resize(300, 200)
     
            # image d'origine
            self.image0 = QtGui.QImage(image)
     
            # redimensionne et affiche l'image de fond à la bonne dimension
            self.redimage(self.width(), self.height())
     
        #========================================================================
        def redimage(self, width=None, height=None):
            """redimensionne l'image selon les arguments donnés à l'appel
            """
            if width!=None and height==None:
                # on redimensionne selon la largeur mais on garde le ratio de l'image
                image = self.image0.scaledToWidth(width, QtCore.Qt.SmoothTransformation)
            elif width==None and height!=None:
                # on redimensionne selon la hauteur mais on garde le ratio de l'image
                image = self.image0.scaledToHeight(height, QtCore.Qt.SmoothTransformation)
            elif width!=None and height!=None:
                # on redimensionne selon la largeur et la hauteur, mais le ratio de l'image change
                image = self.image0.scaled(width, height, QtCore.Qt.IgnoreAspectRatio, QtCore.Qt.SmoothTransformation)
            else:
                image = self.image0  # ici, on ne fait aucun redimensionnement
     
            # affiche l'image de fond
            palette = QtGui.QPalette()
            palette.setBrush(QtGui.QPalette.Background, QtGui.QBrush(image))
            self.setPalette(palette)
     
        #========================================================================
        @QtCore.pyqtSlot("QResizeEvent")
        def resizeEvent(self, event=None):
            """Méthode exécutée à chaque redimensionnement
            """
            # redimensionne l'image de fond à la nouvelle taille
            self.redimage(event.size().width(), event.size().height())
     
    #############################################################################
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        image = "Barques.jpg"
        fen = Dialog(image)
        fen.show()
        sys.exit(app.exec_())
    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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 139
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer le background d'une cellule de JTable
    Par m@t dans le forum Composants
    Réponses: 8
    Dernier message: 27/11/2005, 18h28
  2. [C#] Changer la propriété background d'une table
    Par dupin40 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/11/2005, 12h12
  3. [C#][Débutan] Couleur background d'une ligne d'un DataGrid
    Par Roach dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/09/2005, 10h03
  4. Background d'une iframe
    Par Kerod dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/04/2005, 22h13
  5. [MFC] Background D'une TabControl
    Par Muby53 dans le forum MFC
    Réponses: 4
    Dernier message: 13/11/2004, 23h34

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