Получить значение QComboBox из QTableWidget из другого метода, где строки таблицы создаются по нажатию кнопки и получить значение по адресу ячейки
У меня в таблице QTableWidget строки создаются по нажатию кнопки, где внутри ячейки помещаю QComboBox, и хочу получить значение QComboBox из другого метода. Проблема в том, что когда я создаю QComboBox в основном классе окна, у меня при клике не создается несколько QComboBox, а только в последней строке. А когда создаю внутри метода когда нажимаю кнопку могу создать несколько QComboBox, но не могу обратится к QComboBox по адресу ячейки в QTableWidget. Ниже я привел мой код, где строки и стоблцы создаются по клику на кнопку, где я пытался обратится через метод QTableWidget.cellWidget(1, 1), но у меня просто вылетает программа без TraceBack.
import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
class MyWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super().__init__()
self.centralWidget = QWidget()
self.setCentralWidget(self.centralWidget)
self.row_count = 1
self.table_index = 0
self.tableWidget = QtWidgets.QTableWidget()
self.tableWidget.setRowCount(0)
self.tableWidget.setColumnCount(2)
self.button = QtWidgets.QPushButton('Добавить строки таблицы')
self.button_1 = QtWidgets.QPushButton('Вывести значение ячейки')
self.layout = QVBoxLayout(self.centralWidget)
self.layout.addWidget(self.tableWidget)
self.layout.addWidget(self.button)
self.layout.addWidget(self.button_1)
self.button.clicked.connect(self.add_cells)
self.button_1.clicked.connect(self.print_cells)
def add_cells(self): # метод для добавления строки и ячеек
self.tableWidget.setRowCount(self.row_count)
self.tableWidget.setItem(self.table_index, 0,
QtWidgets.QTableWidgetItem('Nokia'))
combobox = QtWidgets.QComboBox() # Создаю combobox
combobox.addItem('Продано')
combobox.addItem('В наличии')
self.tableWidget.setCellWidget(self.table_index, 1, combobox)
self.row_count += 1
self.table_index += 1
def print_cells(self):
print(self.tableWidget.item(0, 0).text())
print(self.tableWidget.cellWidget(1, 1).text()) # Запрос значения из ComboBox (вылетает ошибка)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
Ответы (1 шт):
Чтобы вывести значения из QComboBox, нужен не text(), а currentText():
print(self.tableWidget.cellWidget(1, 1).currentText())