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 :

[PyQt] : création dynamique de QPushButton


Sujet :

PyQt Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Autres
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Autres
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut [PyQt] : création dynamique de QPushButton
    Bonjour à tous,

    Je suis débutant en python et PyQt,
    Je n'ai pas trouvé de post (je pense pas chercher de la bonne manière)
    J'aimerais une petite aide afin de pouvoir dissocier mes QPushButton que je créer dans une boucle car pour l'instant il me retourne tout le temps la dernière valeur de ma liste
    Je le sauvegarde dans une liste mais je pense que je ne fais pas le bon appel pour récupérer les valeurs
    Le code est réalisé en parti avec le designer (mais ca vous l'aurez devinez )
    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
     
    for f in family:
     
                self.horizontalLayout = QtWidgets.QHBoxLayout()
                self.horizontalLayout.setObjectName("horizontalLayout")
                self.pushButton =QtWidgets.QPushButton()
                self.familybutton.append(self.pushButton)
                self.pushButton.setMinimumSize(QtCore.QSize(0, 40))
                self.pushButton.setMaximumSize(QtCore.QSize(50, 16777215))
                self.pushButton.setObjectName(f[0])
                self.pushButton.setText(f[1])
                self.pushButton.clicked.connect(lambda:self.afficher_scenario(f[1]))
                self.familybutton.append(self.pushButton)
                self.horizontalLayout.addWidget(self.pushButton)
                self.verticalLayout_3.addLayout(self.horizontalLayout)
                self.familylayout.append(self.horizontalLayout)
    sachant que family provient d'un Json de ce type (que je récupère correctement) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    [[ "1", "TEST1"],
    ["2",  "TEST2"],
    ["3",  "TEST3"],
    ["4","TEST4"]
    ]
    Merci d'avance pour votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 699
    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 699
    Par défaut
    Salut,

    Techniquement, si vous racontez:
    Citation Envoyé par PascalRO Voir le message
    pouvoir dissocier mes QPushButton que je créer dans une boucle car pour l'instant il me retourne tout le temps la dernière valeur de ma liste
    on aimerait voir comment est récupéré la dernière valeur de la liste...
    Et si vous n'êtes pas à l'aise avec le jargon technique, écrire un code plus petit qui permette de reproduire le problème montrerait que vous avez bossé sur le sujet (fabriqué un reproducteur en éliminant tout ce qui est sans rapport) et permettrait de voir (en essayant sur sa machine) le problème rencontré (pour autant qu'on sache quoi regarder dans ce cas...).

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Autres
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Autres
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut
    Bonjour Wiztricks

    Effectivement il manque une partie
    L'objectif c'est de récupérer le texte d'un bouton dont j'ai fais le setText et de l'utiliser afin de personnaliser le setupUI d'une autre fenêtre

    Je récupère la valeur à l'aide du connect qui est dans le code que j'ai déjà mis avec le clicked du pushbutton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      self.pushButton.clicked.connect(lambda:self.afficher_scenario(f[1]))
    A savoir que j'ai également essayé de le faire d'une autre manière en créant une classe de bouton qui hérite du pushbutton (j'aurai peut être du le surcharger ? )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class ClicBouton(QtWidgets.QPushButton):
     
        def change_Programme (self):
            texte = str (self.text ())      
            return texte
    #Appel de la fonction modifié dans le code 
      self.pushButton.clicked.connect(lambda:self.afficher_scenario(self.pushButton.change_Programme()))
    Puis je l'exploite dans une deuxième fenêtre que j'ouvre à l'aide de cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        def afficher_scenario(self,text):
                scenario=QtWidgets.QDialog()
                uiscenario=ss()
                uiscenario.setupUi(scenario,text)
                scenario.exec()
    Et pour l'instant je fais juste un print de la valeur avant de poursuivre le développement qui me remonte la valeur "TEST4" a chaque fois peu importe le bouton cliquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     def setupUi(self, Dialog,text):
            print(text)

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 816
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par PascalRO Voir le message
    J'aimerais une petite aide afin de pouvoir dissocier mes QPushButton que je créer dans une boucle car pour l'instant il me retourne tout le temps la dernière valeur de ma liste
    Si tu es dans une boucle (style for f in family avec family qui contient 50 trucs) et que dans la boucle tu écris toto=random(), tu auras au final un seul toto, pas 50. Ca c'est un des fondements des langages et pas que de Python. Et c'est pareil avec les QPushButton.
    Comment faire pour avoir 50 "toto"? Il faut un tableau de toto(s). Hé ben là encore c'est pareil avec les QPushButton.

    Citation Envoyé par PascalRO Voir le message
    L'objectif c'est de récupérer le texte d'un bouton dont j'ai fais le setText et de l'utiliser afin de personnaliser le setupUI d'une autre fenêtre
    QSignalMapper. Tu associes tous tes boutons à un mapper de signal auquel tu rajoutes le texte de chaque bouton. Dans ce cas tu n'as alors plus besoin de tableau de boutons puisque Qt les connait et les gère lui-même.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Autres
    Inscrit en
    Janvier 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Autres
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 3
    Par défaut
    Bonjour Sve@r,

    Merci de ta réponse, ca marche du tonnerre !

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

Discussions similaires

  1. Création dynamique TADOConnection
    Par chaours dans le forum Bases de données
    Réponses: 6
    Dernier message: 19/04/2004, 10h54
  2. [D7] Création dynamique de Form
    Par jer64 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2003, 12h20
  3. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07
  4. TWebBrowser et création dynamique
    Par BakaOnigiri dans le forum Web & réseau
    Réponses: 2
    Dernier message: 01/09/2002, 10h53
  5. Création dynamique de TImages
    Par Dric dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/07/2002, 12h36

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