Вставить переменные в 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())