개발여행

[pyqt5, pyside2] 테이블 행, 열 추가 및 값 수정하기, 표에 위젯 넣기 본문

Python

[pyqt5, pyside2] 테이블 행, 열 추가 및 값 수정하기, 표에 위젯 넣기

Titan. 2021. 7. 27. 15:56

pyqt5를 기준으로 작성되었으나, 모듈을 import 할때 PyQt5대신 PySide2로 입력하여도 동일하게 동작한다.

 

import sys
from PyQt5.QtWidgets import *


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(1280, 720)
        self.hbox = QHBoxLayout(self)
        self.setupUI()
        self.show()

    def setupUI(self):
        columns = ['a', 'b', 'c', 'd']
        table = QTableWidget()
        table.setColumnCount(4)
        table.setHorizontalHeaderLabels(columns)
        table.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.hbox.addWidget(table)


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

 

위 코드는 기본적인 테이블 생성코드이다.

 

setItem(row, column, QTableWidgetItem)

테이블의 빈칸에 문자를 넣고싶은 경우, setIte 메소드에 행, 열, 내용을 전달하여 설정할 수 있다.

이때 내용은 QTableWidgetItem 객체 형태로 전달하여야 한다.

        table.setRowCount(3)
        table.setColumnCount(6)
        table.setItem(2, 1, QTableWidgetItem('text'))

테이블을 처음 생성할 때와 마찬가지로 setRowCount()와 setColumnCount()메소드로 행, 열 개수를 조정할 수 있다.

setHeaderLabels()를 이용해 컬럼명을 초기화 해주지 않으면 위와 같이 기존의 컬럼명은 그대로 있고 추가되는 컬럼명이 숫자로 바뀐다.

 

 

setCellWidget(row, column, QWidget)

문자외의 위젯도 테이블에 삽입할 수 있다. 아래 같이 setCellWidget 메소드에 행, 열, 위젯을 전달해주면 해당하는 셀에 위젯을 삽입한다.

        table.setCellWidget(2, 2, QPushButton('버튼'))
        table.setCellWidget(2, 3, QCheckBox())
        table.setCellWidget(2, 4, QLabel('라벨'))
        table.setCellWidget(2, 5, QSpinBox())

 

cellWidget(row, column)

cellWidget 메소드로 테이블내의 위젯에 접근할 수 있다.

        table.cellWidget(2, 2).setText('btn')