Search code examples
pyqt4qtablewidgetqcombobox

How make items in combobox appear in one selection instead of selecting them only one by one?


How do you get items that are added to qcomboBox with click of push button to appear as example: '10, 23, 56, 14, 57, ... ' instead of only having them all appear in the drop down menu and only selecting them one by one? Here is my code:

def setup(self, Dialog):   
        ...
    self.comboBox = QtGui.QComboBox(Dialog)
    self.comboBox.setGeometry(QtCore.QRect(20, 100, 431, 22))
    self.comboBox.setObjectName(_fromUtf8("comboBox"))

    self.tableWidget = QtGui.QTableWidget(Dialog)
    self.tableWidget.setGeometry(QtCore.QRect(20, 470, 651, 71))
    self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
    self.tableWidget.setTextElideMode(QtCore.Qt.ElideRight)
    self.tableWidget.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerItem)
    self.tableWidget.setRowCount(1)
    self.tableWidget.setColumnCount(129)
    self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
    item = QtGui.QTableWidgetItem()
    for i in range(0, self.tableWidget.columnCount()):
        self.tableWidget.setItem(0, i, item)

    self.pushButton_7 = QtGui.QPushButton(Dialog)
    self.pushButton_7.setGeometry(QtCore.QRect(220, 650, 75, 23))
    self.pushButton_7.setObjectName(_fromUtf8("pushButton_7"))
    self.pushButton_7.clicked.connect(self.additem)

def additem(self):
    for i in range(0, self.tableWidget.columnCount()):
        item = self.tableWidget.item(0,i)
        if item != None:
            text = item.text()
            self.comboBox.addItem(text)

Solution

  • your additem method should look like this:

    def additem(self):
        text = ""
        for i in range(0, self.tableWidget.columnCount()):
            item = self.tableWidget.item(0,i)
            if item != None:
                text += item.text() + ", "
    
        self.comboBox.addItem(text[:-2])