2015-07-15 14 views
1

У меня есть QTreeWidget, который я использую для представления структуры разбивки данных. В основном я планирую использовать свой QTreeWidget таким образом, чтобы отслеживать население определенной демографии в городах. Например:Итерация QTreeWidget

Males          9,000 
    - New York        5,000 
    - D.C.         4,000 

Females         10,000 
    - Nashville       3,000 
    - San Diego       7,000 

Очевидно, что это данные, например. Несколько проблем, которые я испытываю при реализации этого. Я не могу понять, как перебирать дерево. Так что каждый так часто я могу проверить, изменились ли данные. Если оно изменилось, то я хочу, чтобы обновить его с данными, которые я хранящимися в моем питона словаря, который выглядит примерно так:

{'Males': [MyCustomClass('New York', 5000), MyCustomClass('D.C.', 4000)], 
'Females': [MyCustomClass('Nashville', 3000), MyCustomClass('San Diego', 7000)], 
} 

Любые мысли о том, как я могу перебирать каждого элемента (и, таким образом, каждый столбец каждой элемент) и сравнить его со значением хранимого словаря?

+1

Похоже, вы должны использовать 'QTreeView' с пользовательская модель, вместо того, чтобы пытаться синхронизировать дерево с данными. – ekhumoro

+0

Насколько сложно было бы преобразовать QTreeWidget в то, что вы предлагаете? – sudobangbang

+1

Не очень сложно. Если вы делаете веб-поиск для 'pyqt qtreeview custom model', вы должны найти множество примеров/учебников. – ekhumoro

ответ

3

Вы можете использовать QTreeWidgetItemIterator

Поскольку я не мог найти официальную документацию PyQt для него, что-то, как это должно работать:

iterator = QTreeWidgetItemIterator(self.treeWidget) 

while iterator.value(): 
    item = iterator.value() 
    if item.text() == "someText" #check value here 
     item.setText(column, "text") #set text here 
    iterator+=1