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 :

Prendre la valeur d'un QTableView


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Par défaut Prendre la valeur d'un QTableView
    je veut prendre la valeur d'un columns d'un Qtable view ?

    par example je veut prendre cette mot et l'afficher

    Pièce jointe 272030

    je utilise le python 2.7 et Qt 4

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Un QTableView n'est pas fait pour ça, mais on peut quand même récupérer les données affichées.

    Partons des variables:
    • self.tablevue est le QTableView
    • model est le modèle utilisé
    • i le numéro de ligne (commence à 0)
    • j le numéro de colonne


    Alors, la donnée de la ligne i et colonne j est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.tablevue.model().item(i,j).data(QtCore.Qt.DisplayRole)
    Et si on veut récupérer la totalité du tableau affiché (=> liste de listes):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            data = []
            for i in range(0, self.tablevue.model().rowCount()):
                data.append([]) # nouvelle ligne
                for j in range(0, self.tablevue.model().columnCount()):
                    elem = self.tablevue.model().item(i,j).data(QtCore.Qt.DisplayRole)
                    data[-1].append(elem)
    C'est du code Python3 + PyQt5, mais j'espère qu'il fonctionnera quand même chez toi!

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Par défaut
    Alors c'est impossible de récupéré un valeur cliquer sur Qtableview ?
    je veut lorsque je fait un click sur un column et click sur buttons affiche la valeur cliquer sur Qtableview

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Citation Envoyé par Dr.root Voir le message
    Alors c'est impossible de récupéré un valeur cliquer sur Qtableview ?
    je veut lorsque je fait un click sur un column et click sur buttons affiche la valeur cliquer sur Qtableview
    Ce n'est déjà pas facile de te comprendre, mais je me suis contenté de répondre à ta 1ère question qui n'est pas celle-là. Par ailleurs, ta pièce jointe est illisible.

    Et puis tu n'es pas obligé ni de dire bonjour, ni de remercier, mais ça aide...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 33
    Par défaut
    Je suis vraiment stress , je suis désoler :/ merci pour votre réponse monsieur

    salut , lorsque je click sur la mot (Febraruy ) dans qtableview et je click sur un button afficher moi la valeur

    Nom : plastique-tableview.png
Affichages : 589
Taille : 8,0 Ko

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Voilà comment on peut faire.

    Il faut d'abord préparer le QTableView (self.tablevue) à recevoir le signal "clicked" qui est émis quand on clique avec la souris dans une case:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.tablevue.clicked.connect(self.caseclic)
    Puis on crée la méthode "caseclic" qui va recevoir l'information contenue dans la case qui a été cliquée: c'est un QModelIndex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        def caseclic(self, qmodelindex):
     
            print(qmodelindex.data(QtCore.Qt.DisplayRole))
    Mais toi, tu ne veux pas la valeur de la case cliquée, mais celle de la case juste à droite. Alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        def caseclic(self, qmodelindex):
     
            i = qmodelindex.row()
            j = qmodelindex.column()
            print(qmodelindex.sibling(i, j+1).data(QtCore.Qt.DisplayRole))
    Bien sûr, si tu cliques sur une case de la dernière colonne, la valeur retournée est None puisque la case suivante n'existe pas.

    Ici, je t'ai mis un "print" pour que la valeur soit affichée dans la console de lancement, mais tu peux aussi avoir une petite fenêtre qui donne l'info:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        def caseclic(self, qmodelindex):
     
            i = qmodelindex.row()
            j = qmodelindex.column()
            valeur = qmodelindex.sibling(i, j+1).data(QtCore.Qt.DisplayRole)
            QtWidgets.QMessageBox.information(self, 
                        "Valeur", 
                        valeur)
    C'est du code Python 3.5 + PyQt5 5.8. Pour tes versions, il faudra:
    - retirer les parenthèses du "print"
    - remplacer "QWidgets" par "QtGui".
    J'espère que ça suffira: Python 3 existe maintenant depuis 2008: il faudra bien abandonner Python 2 un jour ou l'autre...

Discussions similaires

  1. [VBA-W]prendre des valeurs "texte" dans Excel
    Par teromah dans le forum VBA Word
    Réponses: 12
    Dernier message: 14/06/2007, 16h20
  2. Réponses: 4
    Dernier message: 27/07/2006, 16h47
  3. Concatenation et Prendre la valeur d'un input de type Text
    Par pidu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 16h58
  4. forcer une touche du clavier à prendre la valeur d'une autre
    Par agderf dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/01/2006, 16h08
  5. Prendre une valeur dans la grappe XML
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 21/05/2003, 10h26

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