Мне интересно узнать, как работают методы currentItem()) и selectedItems() QlistWidget.PYQT4 QlistWidget: currentItem и selectedItem different при вызове currentItemchaged, почему?
То, что я (упрощенно): -I есть QListWidget со списком элементов (Список пользователей задается) -Я QAbstractViewItem.extendedSelection активированный -Есть QLineEdit (userAge) -Есть словарь DataDict с ключом : значение ==> ListItem.text(): QlineEdit.text())
-I подключили userAge.textChanged к функции SaveData
**def** *saveData*():
currentItem=str(usersList.currentItem().text())
DataDict[currentItem]=QlineEdit.text()
-I подключен 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), но я хочу, чтобы пользователь возможность выбора нескольких элементов изменить usersAge и УстановитьДанный весь SelectedItems, и я пытаюсь сделать это, изменив свой сейв() следующим образом:
def saveData():
for item in usersList.selectedItems():
currentItem=str(item.text())
DataDict[currentItem]=QlineEdit.text()
-The проблема сейчас в том, что, когда я изменил CurrentItem щелкнув по другому элементу данные предыдущего s переопределены током загружен один
Я знаю, Что, вероятно, происходит это (если я не ошибаюсь): 1.I нажмите на другой предмет (изменение текущего элемента) 2.currentItemChanged срабатывает 3. LoadData() называется 3.a userAge.clear() называется 3.b userAge.textChanged срабатывает 3.c сейв() вызывается (теперь с пустым) 3.d userAge.setText (данные)
3.e userAge.textChanged запускается 3.f saveData() вызывается (с загруженными данными)
- В моей голове это должно работать нормально, потому что currentItem/selectedItem одинаковы, но причиной этой проблемы является то, что при вызове saveData() currentItem и selectedItem отличаются, если я печатаю currentItem.text() и selectedItems() [0] .text() Когда я ввел savData()
Я заметил, что currentItem = currentItem (что правильно), но selectedItems() [0] .text() = previousItem (что неверно, currentItem)
Почему это происходит? Что я делаю не так? или что мне не хватает? Почему выбор не обновляется при изменении текущего элемента?
Я новичок, поэтому, возможно, я что-то делаю неправильно, но если бы кто-то не помог мне понять, что происходит?
спасибо заранее