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 :

stylesheet en cascade sur plusieurs QLabel


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2022
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2022
    Messages : 21
    Par défaut stylesheet en cascade sur plusieurs QLabel
    Bonjour.
    je voudrais changer le style de plusieurs QLabel,
    lorsque j'enchaine 2 setStyleSheet , seul le dernier est prit en compte.

    ex:
    j'ai 2 QLabel (label1 et label2) le nom est defini dans QT designer

    self.dlg.setStyleSheet("QLabel#label1{color : blue;background-color: green}")
    self.dlg.setStyleSheet("QLabel#label2{color : blue;background-color: red}")

    je ne vois pas où est le soucis, je passe bien par des ID selector pourtant.

    merci de m’éclairer.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2022
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2022
    Messages : 21
    Par défaut
    si je fais :

    self.dlg.label1.setStyleSheet("background-color: red")
    self.dlg.label2.setStyleSheet("background-color: blue")

    pas de soucis, ca marche.
    mais je veux une solution pour pouvoir "boucler" sur une liste de QLabel car je veux modifier l'apparence de certains labels (pas tous) et j'en ai beaucoup.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 742
    Par défaut
    Salut,

    A vous lire, on dirait que vous ne savez pas faire une boucle sur une liste de... ce qui semble "bizarre" puisque ce sont des bases à connaitre avant de se perdre dans Qt.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2022
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2022
    Messages : 21
    Par défaut
    si je boucle (2 fois), seul le dernier setstylesheet est prit en compte, ou du moins le premier setstylesheet est remis à défaut.
    si mon premier exemple ne fonctionne pas, inutile de boucler, ça marchera pas mieux après.

  5. #5
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 143
    Par défaut
    Salut,

    Effectivement, tel quel ça ne fonctionne pas, il faut les passer en une seule fois :
    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
    from PyQt6 import QtCore
    from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit
     
     
    class Ui_Labels(object):
        def setupUi(self, Labels):
            Labels.setWindowTitle("Labels")
            Labels.setObjectName("Labels")
            Labels.resize(253, 219)
            self.vLayoutWidget = QWidget(parent=Labels)
            self.vLayoutWidget.setGeometry(QtCore.QRect(10, 20, 231, 182))
            self.vLayoutWidget.setObjectName("vLayoutWidget")
            self.verticalLayout = QVBoxLayout(self.vLayoutWidget)
            self.verticalLayout.setContentsMargins(0, 0, 0, 0)
            self.verticalLayout.setObjectName("verticalLayout")
     
            self.label1 = QLabel(parent=self.vLayoutWidget)
            self.label1.setObjectName("label1")
            self.label1.setText("Label_1")
            self.verticalLayout.addWidget(self.label1)
            self.lineEdit1 = QLineEdit(parent=self.vLayoutWidget)
            self.lineEdit1.setObjectName("lineEdit1")
            self.verticalLayout.addWidget(self.lineEdit1)
     
            self.label2 = QLabel(parent=self.vLayoutWidget)
            self.label2.setObjectName("label2")
            self.label2.setText("Label_2")
            self.verticalLayout.addWidget(self.label2)
            self.lineEdit2 = QLineEdit(parent=self.vLayoutWidget)
            self.lineEdit2.setObjectName("lineEdit2")
            self.verticalLayout.addWidget(self.lineEdit2)
     
            self.label3 = QLabel(parent=self.vLayoutWidget)
            self.label3.setObjectName("label3")
            self.label3.setText("Label_3")
            self.verticalLayout.addWidget(self.label3)
            self.lineEdit3 = QLineEdit(parent=self.vLayoutWidget)
            self.lineEdit3.setObjectName("lineEdit3")
            self.verticalLayout.addWidget(self.lineEdit3)
     
            self.vLayoutWidget.setStyleSheet(
                """QLabel#label1{color : blue; background-color: green}
                QLabel#label2{color : blue; background-color: red}
                QLabel#label3{color : blue; background-color: yellow}"""
            )
     
     
    if __name__ == "__main__":
        import sys
     
        app = QApplication(sys.argv)
        Labels = QWidget()
        ui = Ui_Labels()
        ui.setupUi(Labels)
        Labels.show()
        sys.exit(app.exec())
    Maintenant, si tu dois utiliser une boucle, rien ne t'empêche d'itérer sur tes widgets label et d'appliquer ta "customisation"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CUSTOM_WIDGETS = ("color : blue; background-color: green", 
                            "color : blue; background-color: red",
                            "color : blue; background-color: yellow")
     
    for i, label in enumerate(self.vLayoutWidget.findChildren(QLabel)):
        label.setStyleSheet(CUSTOM_WIDGETS[i])

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2022
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2022
    Messages : 21
    Par défaut
    merci, nickel.

    mais j'aimerais bien savoir pk je ne peux pas enchainer les setstylesheet en utilisant les selecteurs d'ID ? c'est fait pour ca il me semble.

Discussions similaires

  1. [XL-365] MAJ automatique de listes déroulantes en cascades sur plusieurs onglets
    Par IcemanY15 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/08/2021, 15h24
  2. [AC-2013] Liste en cascade sur plusieurs tables
    Par fremarnat dans le forum IHM
    Réponses: 5
    Dernier message: 17/10/2013, 15h54
  3. [2008R2] Relations en cascade sur plusieurs tables
    Par Piou2fois dans le forum Développement
    Réponses: 9
    Dernier message: 24/04/2013, 10h24
  4. Requete sur plusieurs tables en cascade
    Par Lamanne dans le forum Requêtes
    Réponses: 10
    Dernier message: 12/02/2009, 14h14
  5. [ZF 1.5] Suppression en cascade sur plusieurs niveaux
    Par Janitrix dans le forum Zend_Db
    Réponses: 12
    Dernier message: 12/05/2008, 02h38

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