Je construis une application simple pour ouvrir un dossier de données et tracer ces données. Importation des données de données Un Qtreeewidget indique quels signaux sont disponibles pour tracer. Ex:
p>
Le qtreewidget est peuplé une fois que les données sont remplies. Importé à l'aide de: P>
def update_treeWidget(self):
headers = self.df['voltage recording'].columns[1:]
sweeps = self.df['voltage recording'].index.levels[0]
for header in headers:
parent_item = QtWidgets.QTreeWidgetItem(self.treeWidget)
parent_item.setCheckState(0, QtCore.Qt.Unchecked)
parent_item.setText(0, header)
for sweep in sweeps:
child_item = QtWidgets.QTreeWidgetItem(parent_item)
child_item.setCheckState(0, QtCore.Qt.Unchecked)
child_item.setText(0, sweep)
3 Réponses :
le figuré. Cela atteint au moins ce dont j'avais besoin pour atteindre:
def find_checked(self):
checked = dict()
root = self.treeWidget.invisibleRootItem()
signal_count = root.childCount()
for i in range(signal_count):
signal = root.child(i)
checked_sweeps = list()
num_children = signal.childCount()
for n in range(num_children):
child = signal.child(n)
if child.checkState(0) == QtCore.Qt.Checked:
checked_sweeps.append(child.text(0))
checked[signal.text(0)] = checked_sweeps
return checked
Quelle est la différence entre invisiblerootitem et toplevelitemcount?
La solution suivante peut être utilisée:
for item in self.QTreeWidget.findItems("", Qt.MatchContains | Qt.MatchRecursive):
if (item.rowCount() == 0 and item.checkState()>0):
print (item.text(),item.checkState())
cinq ans plus tard, je cherchais une réponse à votre deuxième question. Bien que le code de Dan_g a été très utile, je pense que cela ne répertoriera pas tous les éléments si la profondeur de l'arborescence est supérieure à 2. J'ai créé une version récursive qui répertoriera tous les éléments sélectionnés, quel que soit leur niveau dans l'arborescence.
def get_selected_leaves(self):
checked_items = []
def recurse(parent_item):
for i in range(parent_item.childCount()):
child = parent_item.child(i)
grand_children = child.childCount()
if grand_children > 0:
recurse(child)
else:
if child.checkState(0) == Qt.Checked:
checked_items.append(child.text(0))
recurse(self.ui.treeWidget.invisibleRootItem())
return checked_items