Qt/PyQt5 강좌

pyQt5 QTableWidget 예제 코드

webnautes 2024. 8. 16. 22:10
반응형

pyQt5 QTableWidget 예제 코드입니다.



2024. 8. 12  최초작성





import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QVBoxLayout, QHeaderView, QFrame
from PyQt5.QtCore import Qt

class TableExample(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        self.setWindowTitle('PyQt5 Table Example')
        self.setFixedSize(400,250)

        self.table = QTableWidget()
       
        # 테이블 크기 설정 (행, 열)
        self.table.setRowCount(5)
        self.table.setColumnCount(3)

        # 열 헤더 설정
        self.table.setHorizontalHeaderLabels(['Name', 'Age', 'City'])

        # 데이터 추가
        data = [
            ('Alice', '25', 'New York'),
            ('Bob', '30', 'San Francisco'),
            ('Charlie', '35', 'London'),
            ('David', '40', 'Tokyo'),
            ('Eve', '45', 'Paris')
        ]

        for row, (name, age, city) in enumerate(data):
            self.table.setItem(row, 0, QTableWidgetItem(name))
            self.table.setItem(row, 1, QTableWidgetItem(age))
            self.table.setItem(row, 2, QTableWidgetItem(city))

        # 테이블 크기를 내용에 맞게 조정
        self.table.resizeColumnsToContents()
        self.table.resizeRowsToContents()

        # 헤더 크기 조정 및 스타일 설정
        self.table.horizontalHeader().setStretchLastSection(True)
        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table.setFrameStyle(QFrame.Box | QFrame.Plain)

        # 스크롤바 제거
        self.table.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.table.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)

        # 레이아웃 설정
        layout = QVBoxLayout()
        layout.addWidget(self.table)
        layout.setContentsMargins(10, 10, 10, 10)
        self.setLayout(layout)

        # 창 크기를 테이블 크기에 맞게 자동 조정
        self.adjustSize()

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

 

반응형