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 :

Récuperer l'objet cliqué dans une liste et combobox [QtGui]


Sujet :

PyQt Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut Récuperer l'objet cliqué dans une liste et combobox
    Bonjour c'est encore moi!

    Mon petit problème du jour est de récuperer la valeur lors d'un clique sur une QlistWidget ou un Qcombobox.
    J'arrive bien à remplir la liste ou la combo, et au clique faire un print, mais pas à récuperer ce que j'ai cliqué. Après avoir lu la doc, et forum il faudrai que j'utilise un selecteditems() ou un currentchanged() mais je ne vois pas comment l'utiliser dans mon cas.

    Appel de ma fenetre menu cim:

    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
    def call_menuCim_dialog(self, name):
             # name est celui qui demande le menu
             #instanciation de la fenetre Menu
             self.dial = QtGui.QDialog()
             menucim = Ui_Form()
             menucim.setupUi(self.dial)
             #connexions des widgets de la fenetre Menu
             menucim.BtnCreer.clicked.connect(self.on_creer_clicked)
             menucim.BtnRevue.clicked.connect(self.on_revue_clicked)
             menucim.txtRecherche.textChanged.connect(self.on_recherche_edited)
             menucim.listWidget.currentItemChanged .connect(self.on_lister_clicked)
             menucim.BtnFermer.clicked.connect(self.dial.close)
             #Requete : Afficher liste des reference des doc maitrisés
             for elem in ModelElixir.Doc_Maitrise.query.all():
                menucim.listWidget.addItem(elem.Reference_Doc)
             #methode ouvrant la fenetre Menu
             self.dial.show()
    Slot de la liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def on_lister_clicked(self):
             print u"cliquer sur une reférence"  
             objetcliquer = menucim.listWidget.selectedItem
             print objetcliquer
    Evidement mon code ne fonctionne pas car il reconnait pas menucim..

    Merci de votre aide

    Cordialement

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Oui, si le contenu de menucim est dynamique, que tu dois en gérer le contenu il faudra en garder une référence, donc changer menucim en self.menucim


    Tu as utilisé le signal currentItemChanged pour ta liste, ta fonction on_lister_clicked(self) recevra deux arguments de plus l'ancien QListWidgetItem sélectionné (None, si il n'y en avait pas) et le nouveau QListWidgetItem sélectionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    def on_lister_clicked(self, old, new):
    (l'ordre old, new est peut-être inversé)


    D'autre part, et juste pour info, selectedItems est à la forme plurale et retourne une liste.
    Si tu es sure qu'il ne peut y avoir qu'une seule sélection à la fois, tu peux prendre le premier (et unique) objet de la liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objetcliquer = self.menucim.listWidget.selectedItems()[0]

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Points : 39
    Points
    39
    Par défaut
    Merci VinsS,

    Effectivement il fallait mettre un self à la fois dans le def call_menuCim_dialog et dans la fonction def on_list_clicked

    Pour ceux que sa peuvent interesser :
    J'ai trouvé une autre méthode pour la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def on_lister_clicked(self):
             print u"cliquer sur une reférence"  
             objectclique=self.menucim.listWidget.currentItem() 
             print objectclique.text()
    Puis la combo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    objectclique = str(self.CimAjouterDoc.ComboType.currentText())
             print objectclique
    Pour ma culture perso, j'ai essayé ta méthode mais j'ai pas saisie comment instancier le old et le new

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.CimAjouterDoc.ComboType.activated.connect(self.on_combotype_activated)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def on_combotype_activated(self, old, new):
    old = None
    new = ???
    objetcliquer = self.menucim.listWidget.selectedItems(old,new)[0]
    Dernière petite question : sur PyQt, y a t-il possibilité sur une combo, d'afficher les données en 2 colonnes ?

    Cordialement

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par LinC49 Voir le message

    Pour ma culture perso, j'ai essayé ta méthode mais j'ai pas saisie comment instancier le old et le new

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.CimAjouterDoc.ComboType.activated.connect(self.on_combotype_activated)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def on_combotype_activated(self, old, new):
    old = None
    new = ???
    objetcliquer = self.menucim.listWidget.selectedItems(old,new)[0]
    Non, old et new n'ont rien à voir avec une comboBox, il s'agit de données transmises par la listWidget avec le signal currentItemChanged.
    old et new contiennent des objets QListWidgetItem et tu peux accéder aux données avec new.text(), new.data(), new.icon() etc

    Toute la vérité ici: http://www.riverbankcomputing.co.uk/...idgetitem.html

    Dernière petite question : sur PyQt, y a t-il possibilité sur une combo, d'afficher les données en 2 colonnes ?
    Quoi comme type de données, icône + texte, texte + texte, données fixes ou contextuelles ?
    La fenêtre déroulante qui apparaît, lorsque tu cliques sur la flèche, est une QAbstractItemView. On peut donc y mettre un layout contenant diverses choses, mais il serait bien de trouver un exemple fonctionnel parceque c'est d'un usage plutôt avancé.

    voir ici: http://www.riverbankcomputing.co.uk/...titemview.html



    Edit: Je savais que j'avais vu passer un exemple, il est ici:
    http://diotavelli.net/PyQtWiki/Using...th%20QComboBox
    (Si mes souvenirs sont bons, l'affichage était bizarre)

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 26/07/2011, 12h08
  2. [Débutant] Comment rechercher des objets identiques dans une liste de vue?
    Par christs dans le forum C#
    Réponses: 9
    Dernier message: 14/06/2011, 14h23
  3. Récuperer valeurs de DDL dans une liste
    Par sasseur dans le forum C#
    Réponses: 1
    Dernier message: 12/02/2010, 20h52
  4. Identifier un objet donné dans une liste
    Par tiboleo dans le forum ASP.NET
    Réponses: 1
    Dernier message: 05/01/2010, 23h24
  5. [FPDF] Générer un PDF en fonction d'un élément cliqué dans une liste
    Par hartecel dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 22/07/2008, 10h44

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