Поэтому мне любопытно узнать, как на самом деле работают методы currentItem()) и selectedItems() QlistWidget.
Что у меня есть (упрощенно): - У меня есть QlistWidget со списком элементов (usersList) - У меня активирован QAbstractViewItem.extendedSelection - У меня есть QLineEdit (userAge) - У меня есть словарь DataDict с ключом: значение ==> ListItem.text ():QlineEdit.текст())
-Я подключил userAge.textChanged к функции saveData
**def** *saveData*():
currentItem=str(usersList.currentItem().text())
DataDict[currentItem]=QlineEdit.text()
-Я подключил usersList.currentItemChanged к функции loadData:
**def** *loadData*(current,_previous):
currentItem=current.text()
#get data
data=dataDict[currentItem]
#clear previous data
userAge.clear()
#set Data
userAge.setText(data)
что я хочу сделать/проблема (упрощенно):
-прямо сейчас сохранение/загрузка данных в пользовательском интерфейсе работает для одного элемента (currentitem), но я хочу, чтобы пользователь мог выбирать несколько элементов, измените userAge и setData на все selectedItems, и я пытаюсь это сделать изменив мой saveData() следующим образом:
def saveData():
for item in usersList.selectedItems():
currentItem=str(item.text())
DataDict[currentItem]=QlineEdit.text()
- теперь проблема в том, что когда я изменил currentItem, щелкнув другой элемент, данные предыдущего перезаписываются текущим загруженным
-Я знаю, что, вероятно, происходит (если я не ошибаюсь): 1. Я нажимаю на другой элемент (изменение текущего элемента) 2. Запускается currentItemChanged 3. Вызывается loadData () 3. Вызывается userAge.clear () 3.b userAge.textChanged запускается 3.c вызывается saveData() (теперь с пустым) 3.d userAge.setText(data)
3.e запускается userAge.textChanged 3.f вызывается saveData()( с загруженными данными)
-В моей голове это должно работать нормально, потому что currentItem/selectedItem одинаковы, но проблема заключается в том, что когда вызывается saveData(), currentItem и selectedItem разные, если я печатаю currentItem.text() и selectedItems( )[0].text(), когда я ввел savData()
Я заметил, что currentItem= currentItem (что правильно), но selectedItems()[0].text() = previousItem (что неверно, потому что выбран только текущийItem)
почему это происходит? Что я делаю не так? или что мне не хватает? почему выбор не обновляется при изменении текущего элемента?
Я новичок, поэтому я могу делать что-то не так, но если нет, может ли кто-нибудь помочь мне понять, что происходит?
заранее большое спасибо