Задать вопрос
karulyana
@karulyana
Начинающий питонист

Как заполнить таблицу в PyQt5? Почему не работает так?

Есть список:
data = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    1, 1, 1, 1, 1,
                    1, 1, 1, 1, 1,
                    -1, -1, -1, -1,
                    1, 1, 1, 1,
                    -1, -1, 1, 1,
                    -1, -1, 1, 1
                    ]


нужно сделать простую табличку индекс:значение

пыталась сделать

table = QTableWidget()
table.setColumnCount(1)
        for i,entry in enumerate(data):
            table.setRowCount(i)
            entry = str(entry)
            item = QTableWidgetItem(entry)
            table.setItem(0, i, item)


Почему-то не заполняется не могу понять почему?
если вместо i поставить № строки записывается куда надо

2a46ce09b5524fa7a860a24d5fa3350b.png
  • Вопрос задан
  • 5140 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Sergey6661313
Супер просто: строка table.setRowCount(i) обозначает дословно: установить количество строчек. Дальше сами догадаетесь?

Если всё ещё не догадались:
Если в цикле указкать print(i) станет понятно почему не получается.

Всё ещё нет? enumerate начинает итерации с нуля. т.е. в первой итерации получится так: "установить количество строк равное нулю, и поставить в первую строку entry."
во второй итерации: "установить колличество строк равное 1, и пытаться поставить во вторую из них entry".
и т.д.

Короче ответ надо заместо table.setRowCount(i) установить table.setRowCount(i+1)

и я бы на вашем месте делал не:
entry = str(entry)
item = QTableWidgetItem(entry)

а:
item = QTableWidgetItem()
item.setText(str(entry))

Потому что явное лучше не явного. Ну это так мелочи.....................................................ж
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы