Problème DéclarationImpossible de sélectionner toute la ligne de données à partir QTableWidget
Je suis en train de sélectionner des lignes de données de mon QTableWidget et les imprimer à ma console juste pour que je puisse tester certaines choses, avec le objectif final étant capable de tracer les données. Cependant, je ne peux jamais saisir toute la ligne de données.
Contexte
J'ai fait une interface graphique qui peut intégrer plusieurs QTableWidgets par l'importation d'un fichier CSV spécifiquement formaté. L'objectif est de pouvoir extraire des données de plusieurs lignes à partir de tables identiques ou différentes, puis de les tracer côte à côte. Où chaque rangée de données sera son propre ensemble de données et aura sa propre intrigue, mais il y aura plusieurs parcelles sur le même chiffre.
Pour compléter cette tâche j'ai créé une fenêtre appelée CompareWindow qui s'ouvre quand un bouton Qpush appelé "Compare" est pressé. La fenêtre invite l'utilisateur à entrer les noms des tables et les lignes correspondantes de la table à tracer. Après que cette information a été soumise j'ai un dictionnaire que je peux référencer qui a sauvé tous les QTableObjects qui ont été instanciés. Où les clés sont les noms donnés aux tables qui sont connectés à leur objet Table correspondant.
Problème
Les deux principales méthodes que j'ai essayé de saisir les données de ligne sont ...
La première idée utilisait commande TableObject.selectRow() J'itérer les lignes que je voulais, mais chaque fois que je l'ai fait cela retournerait un non-type.
La seconde méthode que j'ai essayée consistait à itérer une colonne de lignes donnée afin qu'elle remplisse une liste une par une en ajoutant les valeurs d'item. Cependant, quand je l'ai fait, il n'a rempli la liste avec le même nombre à plusieurs reprises, ce qui était la première cellule de mon Qtable.
Même lorsque j'appelais explicitement une certaine ligne ou colonne, j'obtiendrais la même sortie. La sortie tirée est .12, le nombre de la première cellule dans mon fichier CSV.
Voici le code en question avec lequel j'ai des problèmes.
def initiateMultiPlot(self, tableV, rowV, PlotV):
"""
1. Match TableName values with the key values in our TableDB
2. When we find a match look at that key's corresponding Table Object, and iterate
through that objects rows and select the rows specified by rowV
3.Call plot for those values
"""
#calls my class and creates a blank figure where eventually we will plot data on
f = CreateFigure.FigureAssembly()
print("")
for i in tableV:
"""
tableV: is list of strings that represent assigned tablenames [Table1, Table2, Table3]
rowV: is a list, containing lists representing rows from corresponding Tables the user wishes to plot.
for example [[1,2],[3,4],[1]] means rows 1,2 from table1, rows 3,4 from table2... so on
PlotV: is a string that is ethier "box" or "whisker" to tell what method to plot. Default right now
is to do a simple boxplot
"""
print("Creating table instance")
#Table Dictionary is setup so the names of the Tables (tableV) are the keys of the dictionary
#and the actual table objects are referenced by these keys
self.TableOBJ = self.TableDictionary[i]
print("Data Type for the table object is..................{}".format(type(self.TableOBJ)))
#empty list that will store our row data
self.Elements = []
try:
for rows in rowV:
for i in rows:
print("rowV value is... {}".format(rowV))
print("current row list{}".format(rows))
print("i value is {}".format(i))
print("itterating")
for j in range(self.TableOBJ.columnCount()):
print("i value is ...{}".format(i))
print("j value is .... {}".format(j))
#FIRST idea try selecting entire row of data
print("i value is ...{}".format(i))
print("j value is .... {}".format(j))
#entire row returns none-type
EntireRow = self.TableOBJ.selectRow(i)
print(EntireRow)
#selecteditems
#SECOND idea try using for loop and iterating through every value in a row
item = self.TableOBJ.itemAt(i,j)
#explicit call for (row 1, col 1) and (row 3, col 3), both which output .12
print(self.TableOBJ.itemAt(1,1).text())
print(self.TableOBJ.itemAt(3,3).text())
print("printing item...... {}".format(item))
element = item.text()
print(element)
#list of .12
self.Elements.append(element)
#elements = [self.TableOBJ.item(i, j).text() for j in range(self.TableOBJ.columnCount()) if
# self.TableOBJ.item(i, j).text() != ""]
#print(elements)
except Exception as e:
print(e)
print(self.Elements)
Voici mon lien GitHub contenant tous mes fichiers: https://github.com/Silvuurleaf/Data-Visualize-Project
Le problème se produit dans mon fichier Perspective.py dans la méthode initiateMultiPlot. Le fichier CompareWindow.py envoie un signal à mon Perspective.py et est connecté à initateMultiPlot. S'il vous plaît se renseigner si quelque chose nécessite une explication plus en profondeur.
Oh non je n'ai pas vu merci! Je –