В pyqt как добавить элементы в combobox?
мне нужна помощь в добавлении некоторых элементов в combBox.Итак, у меня есть два comboboxes, один combobox заполняется в зависимости от выбранного элемента.
мой вопрос в том,что с помощью additem для новых элементов,он работает,но если я выбираю другой вариант combobox, Он добавляет новые элементы, но предыдущие элементы исчезли, и под новыми есть пустые элементы.
Я думал каждый раз, когда я выбираю новый вариант из первого combobox,чтобы очистить содержимое второго combobox,я использовал clear() на втором,но это не сработало.
вот как я думал об этом :
self.comboBox_2.clear()
for index,i in enumerate(list1):
  self.comboBox_2.addItem(_fromUtf8(""))
  self.comboBox_2.setItemText(index+2, QtGui.QApplication.translate("Dialog", i, None, QtGui.QApplication.UnicodeUTF8))
выше является частью функции, которая выполняется при первом combobox изменения.
2 ответов
предполагая, что list1 - Это список строк, тогда вы можете просто добавить их все сразу с помощью addItems способ:
self.comboBox_2.clear()
self.comboBox_2.addItems(list1)
обратите внимание, что вы вероятно используете QApplication.translate неправильно в вашем примере. Если вы хотите сделать это возможным для строк в list1 должны быть переведены на другой язык, вы должны сделать это, когда вы создать список, и использовать строковые литералы.
для пример:
list1 = [
    self.tr('First Item'),
    self.tr('Second Item'),
    self.tr('Third Item'),
    ]
также обратите внимание, что _fromUtf8 функция действительно полезна, только если вы используете строковые литералы, содержащие символы, отличные от ascii, в вашем коде-в противном случае это в основном no-op.
редактировать
если ваш список содержит, скажем, кортежи pixmaps и текста, то вы можете использовать что-то вроде этого:
self.comboBox_2.clear()
for pixmap, text in list1:
    self.comboBox_2.addItem(QIcon(pixmap), text)
здесь есть несколько простых и удобных для чтения демонстраций / примеров https://github.com/shuge/Enjoy-Qt-Python-Binding ,
клонировать его и вы найдете демо о том, как использовать основные QComboBox и пользовательский его значок.
