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