Partage
  • Partager sur Facebook
  • Partager sur Twitter

sélectionner les attribut d'une qmainwindow (PyQt)

(avec qss -> qt stylesheet)

Sujet résolu
    12 juillet 2022 à 15:52:08

    imaginons une fenêtre avec une checkbox à l'intérieur:

    from PyQt6.QtWidgets import QCheckBox, QMainWindow, QApplication
    
    class MyWindow(QMainWindow):
        def __init__(self):
            super().__init__()
            
            self.my_check_box = QCheckBox()
            self.setCentralWidget(self.my_check_box)
    
    if __name__ == "main":
        app = QApplication([])
        window = MyWindow()
        app.setStyleSheet("MyWindow > my_check_box{background: red}")
        window.show()
        app.exec()

    que doit-je écrire dans les styles pour sélectionner self.my_check_box ?

    (spoiler: MyWindow > my_check_box{background: red} ne marche pas)



    -
    Edité par ebdm13 12 juillet 2022 à 15:52:51

    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2022 à 16:35:36

      je trouve assez rapidement  que ça doit être background-colour et pas background tout seul 

      et  le faire sur les indicator:checked et indicator:unchecked pour la couleur de fond de la case

      https://doc.qt.io/qtforpython/overviews/stylesheet-examples.html#customizing-qcheckbox

      • Partager sur Facebook
      • Partager sur Twitter
        12 juillet 2022 à 18:10:38

        je pense mettre mal exprimé, je cherche a sélectionner l'attribut de ma class, peut importe quel widget. Je veux juste accéder à un attribut.

        dans:

        MyWindow > my_check_box{background: red}

        selecteur 

        mais ce sélecteur ne marche pas. et je voudrais accéder à self.my_check_box sans utiliser de class ou autre, ni le nom du widget directement (QCheckBox).

        • Partager sur Facebook
        • Partager sur Twitter
          12 juillet 2022 à 18:32:26

          ok; comme il est dans ta classe MyWindow, tu y as accès avec window.my_check_box et pour y affecter un style tu utilises setStyleSheet sur lui directement => window.my_check_box.setStyleSheet("background-color: red")

          cf le 1er point (tout en haut de la page) de mon précédent lien qui indique les différentes façons selon la portée des widgets à modifier.

          • Partager sur Facebook
          • Partager sur Twitter
            13 juillet 2022 à 12:53:49

            alors oui, mais non, ça je le sais déjà, mais le setStyleSheet est appliqué sur la QApplicaiton et non directement sur la checkbox. Je veux la sélectionner dans le qss à partir de l'app.

            • Partager sur Facebook
            • Partager sur Twitter
              13 juillet 2022 à 14:03:51

              L'autre solution (qui est encore une fois dans le lien donné plus haut) c'est de nommer ton checkbox avec SetObjectName() et d'utiliser son ID

              (3ème écriture de https://doc.qt.io/qtforpython/overviews/stylesheet-examples.html )

              Toutes les façons d'y accéder sont cette page.

              • Partager sur Facebook
              • Partager sur Twitter
                13 juillet 2022 à 16:13:34

                ok, apparemment on peut pas faire comme je l'espérai, mais bon merci quand même
                • Partager sur Facebook
                • Partager sur Twitter

                sélectionner les attribut d'une qmainwindow (PyQt)

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown