Добавление данных в QTableWidget с использованием PyQt4 в Python

Я хочу добавить свои данные в таблицу, используя pyqt в python. Я обнаружил, что должен использовать функцию setItem(), чтобы добавить данные в QTableWidget и указать ей номер строки и столбца и QTableWidgetItem. Я сделал это, но когда я хочу отобразить таблицу, она полностью пуста. Возможно, я сделал глупую ошибку, но, пожалуйста, помогите мне. Вот мой код:

from PyQt4 import QtGui

class Table(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Table, self).__init__(parent)
        layout = QtGui.QGridLayout() 
        self.led = QtGui.QLineEdit("Sample")
        self.table = QtGui.QTableWidget()
        layout.addWidget(self.led, 0, 0)
        layout.addWidget(self.table, 1, 0)
        self.table.setItem(1, 0, QtGui.QTableWidgetItem(self.led.text()))
        self.setLayout(layout)

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    t = Table()
    t.show()
    sys.exit(app.exec_())

Ответ 1

То, что вы ищете, это методы setRowCount() и setColumnCount(). Вызовите их на QTableWidget, чтобы указать количество строк/столбцов. Например.

...
self.table = QtGui.QTableWidget()
self.table.setRowCount(5)
self.table.setColumnCount(5)
layout.addWidget(self.led, 0, 0)
layout.addWidget(self.table, 1, 0)
self.table.setItem(1, 0, QtGui.QTableWidgetItem(self.led.text()))
...

Этот код сделает таблицу 5x5 и отобразит "Образец" во второй строке (с индексом 1) и первом столбце (с индексом 0).

Без вызова этих двух методов QTableWidget не будет знать, насколько велика таблица, поэтому установка элемента в позиции (1, 0) не имеет смысла.

Если вы не знаете об этом, Документация Qt подробно описана и содержит много примеров (которые легко могут быть преобразованы в Python). Особенно полезны разделы "Подробное описание". Если вы хотите получить дополнительную информацию о QTableWidget, перейдите сюда: http://qt-project.org/doc/qt-4.8/qtablewidget.html#details