Вставить переменные в QComboBox при его создании

self.table.setCellWidget(j, 1, QComboBox())

Есть список [a, b, c], так вот, как этот список вставить в QComboBox при его создании?


Ответы (1 шт):

Автор решения: S. Nick

Всегда публикуйте минимально-воспроизводимый пример, который демонстрирует проблему и лучше рассказывайте, что вы хотите сделать, и что у вас не получается.

Не уверен, что правильно понял то, что вы хотите сделать и что у вас не получается.
Но попробуйте как-то так:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton,\
    QVBoxLayout, QMessageBox, QMainWindow, QTableWidget, \
    QComboBox, QTableWidgetItem 
        

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.centralWidget = QWidget()
        self.setCentralWidget(self.centralWidget)
        
        self.row_count = 1
        self.table_index = 0
        self._list = ['a', 'b', 'с',]

        self.tableWidget = QTableWidget(0, 3)
        self.tableWidget.setAlternatingRowColors(True)
        self.tableWidget.horizontalHeader().setSectionResizeMode(3)
        self.tableWidget.resizeColumnsToContents()
       
        self.button = QPushButton('Добавить строку в таблицу')
        self.button.clicked.connect(self.add_cells)

        self.layout = QVBoxLayout(self.centralWidget)
        self.layout.addWidget(self.tableWidget)
        self.layout.addWidget(self.button)

    def add_cells(self):  
        row = self.tableWidget.rowCount()   
        
        self.tableWidget.setRowCount(self.row_count)
        self.tableWidget.setItem(
            self.table_index, 
            0,
            QTableWidgetItem(f'Строка с индексом {self.table_index}')
        )

        combobox = QComboBox()  
        combobox.addItems(self._list)
        combobox.textActivated.connect(
            lambda text, row=row, cb=combobox : 
                   self.current_text(text, row, cb))

        self.tableWidget.setCellWidget(self.table_index, 1, combobox)  
        self.row_count += 1
        self.table_index += 1
      
    def current_text(self, text, row, cb):
        msg = QMessageBox()
        msg.setWindowTitle('Выбран вариант Combobox')
        msg.setText(f'Вы выбрали значение: {text}')
        msg.setInformativeText(
            f'Вы выбрали QCombobox в строке с индексом: {row}')
        msg.exec_()
 

if __name__ == '__main__':
   app = QApplication(sys.argv)
   w = MyWindow()
   w.resize(500, 300)
   w.show()
   sys.exit(app.exec())

введите сюда описание изображения

→ Ссылка