SkillBase

Построение таблиц в PyQt5


import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget



class TableExample(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Пример табличного виджета")
        self.setGeometry(100, 100, 600, 400)

        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)

        self.layout = QVBoxLayout()
        self.central_widget.setLayout(self.layout)

        self.tableWidget = QTableWidget()
        self.layout.addWidget(self.tableWidget)

        self.initUI()

    def initUI(self):
        # Задаем заголовки столбцов
        self.tableWidget.setColumnCount(3)
        self.tableWidget.setHorizontalHeaderLabels(["Имя", "Фамилия", "Возраст"])

        # Добавляем данные в таблицу какой-то массив данных
        data = [
            ("Иван", "Иванов", 25),
            ("Петр", "Петров", 30),
            ("Мария", "Сидорова", 35)
        ]

        self.tableWidget.setRowCount(len(data))
        for i, (name, surname, age) in enumerate(data):
            self.tableWidget.setItem(i, 0, QTableWidgetItem(name))
            self.tableWidget.setItem(i, 1, QTableWidgetItem(surname))
            self.tableWidget.setItem(i, 2, QTableWidgetItem(str(age)))

        # Растягиваем столбцы по содержимому
        self.tableWidget.resizeColumnsToContents()



if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = TableExample()
    window.show()
    sys.exit(app.exec_())