How to add items to a QComboBox in PyQt/PySide
Solution 1
Assuming list1
is a list of strings, then you can simply add them all at once using the addItems method:
self.comboBox_2.clear()
self.comboBox_2.addItems(list1)
Note that you are probably using QApplication.translate
in the wrong way in your example. If you want to make it possible for the strings in list1
to be translated into a different language, you should do that when you create the the list, and use string literals.
For example:
list1 = [
self.tr('First Item'),
self.tr('Second Item'),
self.tr('Third Item'),
]
Also note that the _fromUtf8
function is only really useful if you're using string literals containing non-ascii characters in your code - otherwise, it's basically a no-op.
EDIT
If your list contains, say, tuples of pixmaps and text, then you can use something like this:
self.comboBox_2.clear()
for pixmap, text in list1:
self.comboBox_2.addItem(QIcon(pixmap), text)
Solution 2
There are some simple and easy to read demos/examples here https://github.com/shuge/Enjoy-Qt-Python-Binding ,
clone it and you will find a demo about how to use basic QComboBox
and custom its icon item.
![IordanouGiannis](https://i.stack.imgur.com/ZbKPx.png?s=256&g=1)
IordanouGiannis
Updated on February 10, 2021Comments
-
IordanouGiannis over 3 years
I need some help adding some items to a
QComboBox
. So I have two comboboxes, and one populates the other depending on the item selected.My question is that, using
additem
for new items, it works, but if I choose another option for the combobox, it adds the new items, but the previous items are gone - and there are blank items below the new ones.I thought that each time I chose a new option from the first combobox to clear the contents of the second combobox. So I used the
clear()
on the second - but it didn't work.That's how I thought of it :
self.comboBox_2.clear() for index,i in enumerate(list1): self.comboBox_2.addItem(_fromUtf8("")) self.comboBox_2.setItemText(index+2, QApplication.translate("Dialog", i, None, QApplication.UnicodeUTF8))
The above is part of a function that executes when the first
combobox
changes.