How to add items to a QComboBox in PyQt/PySide


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 :

for index,i in enumerate(list1):
  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.

Asked By: IordanouGiannis



Assuming list1 is a list of strings, then you can simply add them all at once using the addItems method:


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 = ['First Item'),'Second Item'),'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.


If your list contains, say, tuples of pixmaps and text, then you can use something like this:

for pixmap, text in list1:
    self.comboBox_2.addItem(QIcon(pixmap), text)
Answered By: ekhumoro

There are some simple and easy to read demos/examples here ,

clone it and you will find a demo about how to use basic QComboBox and custom its icon item.

Answered By: Tony

I had to populate the comboBox using the names from a textfile

Here’s the code:

    names = self.classes_names()

    def classes_names(self):
        coconames = CURRENT_DIR + os.sep + 'yolo-coco' + os.sep + 'coco.names'
        with open(coconames) as reader:
            return reader.readlines()

I hope it will help someone in the future.

Answered By: Mujeeb Ishaque
Categories: questions Tags: , , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.