Удаление значений QComboBox из JSON
Написал функцию удаления выбранных слов в QComboBox из файла JSON по индексу:
#Функция удаления слов из выпадающего списка
def wordDeleting(self):
with open("spec.json", "r+") as file:
loaded_file = json.load(file)
back_word = loaded_file["specific"]
back_word_2 = loaded_file["customers"]
current_word = self.ui.comboBox.currentIndex()
current_word_2 = self.ui.comboBox_2.currentText()
if self.ui.checkBox.isChecked() == True:
back_word.remove(current_word)
json.dump(loaded_file, file)
if self.ui.checkBox_2.isChecked() == True:
back_word_2.remove(current_word_2)
json.dump(loaded_file, file)
self.ui.comboBox.addItems(back_word)
self.ui.comboBox_2.addItems(back_word_2)
Мой расчет в том, что:
Я выбираю какое либо слово в QComboBox, нажимаю галочку (CheckBox), далее QPushButton которая проверяет условия IsChecked, и если True- удаляет выбранное слово из JSON, и обновляет данные в QComboBox
Но получаю я обратное, код просто создает еще один ключ + список, но уже без выбранного слова, и я конечно вылетаю с ошибкой DataError.
Где я ошибаюсь?
Ответы (1 шт):
Автор решения: Валера Римский
→ Ссылка
Решено так:
def wordDeleting(self):
with open("spec.json", "r", encoding="utf-8") as file:
loaded_file = json.load(file)
current_word = self.ui.comboBox.currentText()
current_word_2 = self.ui.comboBox_2.currentText()
if self.ui.checkBox.isChecked():
back_word = loaded_file["specific"]
back_word.remove(current_word)
with open ("spec.json", "w", encoding="utf-8") as file2:
json.dump(loaded_file, file2)
self.ui.comboBox.clear()
self.ui.comboBox.addItems(loaded_file["specific"])
if self.ui.checkBox_2.isChecked():
back_word_2 = loaded_file["customers"]
back_word_2.remove(current_word_2)
with open ("spec.json", "w", encoding="utf-8") as file3:
json.dump(loaded_file, file3)
self.ui.comboBox_2.clear()
self.ui.comboBox_2.addItems(loaded_file["customers"])