La récupération des données de la cellule à partir d'une cellule sélectionnée dans un tablewidget
Je fais un stock de contrôle de programme et j'ai frappé un problème avec l'obtention de la valeur d'une cellule sélectionnée, je sais que je dois utiliser "QtGui.QTableWidget.currentRow" et "QtGui.QTableWidget.currentColumn" pour obtenir la position d'élément. Cependant, je n'arrive pas à obtenir que cela fonctionne car lorsque les fonctions sont appelées rien n'a été sélectionné et si elle retourne -1,-1
Personne ne sait comment l'obtenir en sorte qu'il fonctionne le "QtGui.QTableWidget.currentRow" et "QtGui.QTableWidget.currentColumn" à chaque fois que l'utilisateur sélectionne une cellule?
je pense que le code que j'ai besoin d'obtenir les données réelles une fois que j'ai co-ords est QtGui.QTableWidget.élément ?
C'est le code que j'utilise obtenir la ligne et de la colonne:
row = self.table.currentRow
column = self.table.currentColumn
self.ID = self.table.item(row, column)
lorsque l'utilisateur clique sur un bouton pour ajouter le bouillon, le programme doit ensuite utiliser le code produit il suffit de faire le changement à la base de données après l'obtention de la quantité ajoutée de l'utilisateur
Je suis à l'aide de python 3.2 et pyqt 4
toute aide serait appréciée
Merci
Sam
là vous allez 🙂
Mise à JOUR: je suis maintenant en mesure de récupérer la cellule élément, cependant, il est de retour à l'article réel plutôt que les données def getCell(self): ligne = auto.table.currentRow() print(ligne) de soi.ID = auto.table.élément(ligne, 0) print(self.ID) retourne <PyQt4.QtGui.QTableWidgetItem objet au 0x0000000006509488> plutôt que de "14" quelqu'un peut-il aider?
Jetez un oeil à mes mises à jour de réponse 🙂 vous voulez l'appeler
item.text()
sur l'élément que vous avez eu retourné.OriginalL'auteur Sam McKay | 2013-01-29
Vous devez vous connecter pour publier un commentaire.
Lorsque le
QTableWidget
voit que quelqu'un a cliqué sur l'un de ses cellules, il émettra uncellClicked
événement dont vous avez besoin pour vous connecter. Peut-être quelque chose commepourrait être dans votre code d'installation,
et la fonction
cell_was_clicked
pourrait être quelque chose commeJe n'ai pas utilisé
currentRow
etcurrentColumn
que vous voulez une réponse sur leclick
. Cette fonction est documentée ici (désolé, je préfère pyside - c'est à peu près le même que PyQT). Notez égalementitemAt
au lieu de simplementitem
- que vous obtiendrez l'article dans la cellule, et non pas son contenu. Utiliser le.text()
fonction deQTableWidgetItem
pour en lire le contenu.Note - c'est à l'aide de "machines à sous et des signaux" et, en particulier, le "nouveau style". Comme vous êtes à l'aide de PyQT4 et Python 3, vous ne devriez avoir aucun problème avec de "nouvelles choses": -)
Vous pourriez envisager de la navigation sur un des slots et signaux tutoriel - qui pourrait redresser quelques-uns de ces concepts abstraits. Bonne chance!
Si cela sonne comme
item
n'est pas unQTableWidgetItem
- voir ceprint(type(self.item))
produit et ensuite chercher dans le manuel.ahhh, je viens de remarqué que j'ai une légère erreur dans mon code, j'avais gardé l'élément au lieu d'utiliser itemAt. sa fonctionne parfaitement maintenant, je peux continuer et obtenir ce programme fini :L
je me demandais si je pouvais obtenir un peu plus d'aide, comment puis-je convertir ce [('exemple de données', 'exemple de données', 'exemple de données', 'exemple de données")] [(exemple de données),(exemple de données),(exemple de données),(exemple de données)] ??
Vous avez probablement quelque chose à ouvrir une nouvelle question... Si
example data
est une valeur numérique, alors six = [('example data', 'example data', 'example data', 'example data')]
puis[float(e) for e in x[0]]
, vous obtiendrez une liste de chars - et vous avez une liste imbriquée, d'où lex[0]
OriginalL'auteur danodonovan