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
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
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:
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 self.tablevue.model().item(i,j).data(QtCore.Qt.DisplayRole)
C'est du code Python3 + PyQt5, mais j'espère qu'il fonctionnera quand même chez toi!
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)
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
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
![]()
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:
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 self.tablevue.clicked.connect(self.caseclic)
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 def caseclic(self, qmodelindex): print(qmodelindex.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.
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))
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:
C'est du code Python 3.5 + PyQt5 5.8. Pour tes versions, il faudra:
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)
- 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...
Partager