Вы можете прокрутить до фактических предыдущих значений, как вы спрашиваете, но уверены ли вы, что ваши результаты всегда будут одинакового размера?Эти цифры могут быть бессмысленными, если вы снова попадете в нужное место.Но просто для справки: вам нужно получить доступ к полосе прокрутки, взять ее значение, затем выполнить повторное заполнение, а затем снова прокрутить это значение:
bar = treeWidget.verticalScrollBar()
yScroll = bar.value()
# repopulate here ...
treeWidget.scrollContentsBy(0, yScroll)
Но более полезным подходом будет поиск элементаэто актуально в поле зрения или интереса, затем заново заполняйте свое дерево, а затем скажите дереву прокрутить до этого фактического элемента.Тогда не имеет значения, где в дереве теперь существует элемент (если структура данных значительно изменилась).
Сначала сохраните текущий элемент по некоторым критериям:
item = treeWidget.currentItem() # one way
item = treeWidget.itemAt(centerOfTree) # another way
# either save the text value or whatever the custom
# identifying value is of your item
text = item.text()
После того, как выИмея это значение данных, будь то текстовое значение или какое-либо другое пользовательское значение данных, вы можете заново заполнить свое дерево, а затем снова найти этот элемент.
# this is assuming the item is both present,
# and referencing it by its string value
newItem = treeWidget.findItems(text)[0]
treeWidget.scrollToItem(newItem)
Вы можете изменить его, чтобы он соответствовал вашему фактическому типу элементов.,Вы можете хранить некоторые другие пользовательские значения для элементов, чтобы найти их снова.