QTableWidget


../_images/4_21_qtablewidget_sample.png

QTableWidget 클래스는 테이블 형태로 항목을 배치하고 다루도록 합니다.

이 페이지에서는 PyQt5 위젯에서 테이블을 만들어서 항목을 배치하고 수정하는 방법을 소개합니다.


예제

## Ex 5-21. QTableWidget.

import sys
from PyQt5.QtWidgets import *


class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        self.tableWidget = QTableWidget()
        self.tableWidget.setRowCount(20)
        self.tableWidget.setColumnCount(4)

        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        # self.tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked)
        # self.tableWidget.setEditTriggers(QAbstractItemView.AllEditTriggers)

        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        # self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)

        for i in range(20):
            for j in range(4):
                self.tableWidget.setItem(i, j, QTableWidgetItem(str(i+j)))

        layout = QVBoxLayout()
        layout.addWidget(self.tableWidget)
        self.setLayout(layout)

        self.setWindowTitle('QTableWidget')
        self.setGeometry(300, 100, 600, 400)
        self.show()


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

20개의 행과 4개의 열을 갖는 테이블이 만들어집니다.



설명

self.tableWidget = QTableWidget()
self.tableWidget.setRowCount(20)
self.tableWidget.setColumnCount(4)

QTableWidget 클래스를 사용해서 테이블 위젯을 하나 만들었습니다.

setRowCount() 메서드는 테이블의 행 (Row)의 수를 지정합니다.

setColumnCount() 메서드는 테이블의 열 (Column)의 수를 지정합니다.



self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
# self.tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked)
# self.tableWidget.setEditTriggers(QAbstractItemView.AllEditTriggers)

setEditTriggers() 메서드는 테이블의 항목을 편집 가능하도록 하는 액션을 지정합니다.

QAbstractItemView.NoEditTriggers으로 지정하면 편집을 할 수 없습니다.

QAbstractItemView.DoubleClicked으로 지정하면 칸을 더블클릭했을 때 편집이 가능합니다.

QAbstractItemView.AllEditTriggers으로 지정하면 클릭, 더블클릭 등 모든 액션에 대해 편집이 가능하도록 합니다.



self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)

horizontalHeader()는 수평 헤더를 반환합니다.

setSectionResizeMode() 메서드는 헤더의 크기를 조절하는 방식을 지정합니다.

QHeaderView.Stretch는 헤더의 폭이 위젯의 폭에 맞춰지도록 합니다.

QHeaderView.ResizeToContents는 헤더의 폭이 항목 값의 폭에 맞춰지도록 합니다.



for i in range(20):
    for j in range(4):
        self.tableWidget.setItem(i, j, QTableWidgetItem(str(i+j)))

setItem(row, column, value) 메서드는 테이블 항목의 값을 지정합니다.

순서대로 행과 열의 번호, 그리고 값을 입력합니다.



결과

../_images/4_21_qtablewidget.png ../_images/4_21_qtablewidget_mac.png

그림 5-21(1). QTableWidget을 이용해서 간단한 테이블 만들기 (NoEdit, Stretch).



../_images/4_21_qtablewidget_02.png ../_images/4_21_qtablewidget_02_mac.png

그림 5-21(2). QTableWidget을 이용해서 간단한 테이블 만들기 (Edit, ResizetoContents).


관련 페이지


이전글/다음글

이전글 :