YOGYUI

PyQt5 - QTableWidget Column Header Label 가져오기 본문

Software/Python

PyQt5 - QTableWidget Column Header Label 가져오기

요겨 2021. 6. 21. 15:04
반응형

QTableWidget의 Column 헤더 라벨(텍스트)는 setHorizontalHeaderLabels(List[srt]) 메서드로 한번에 수정할 수 있지만, 설정된 라벨들을 한번에 가져오는 인터페이스는 내가 알기론 구현되어 있지 않다

대신, horizontalHeaderItem(int) 메서드를 통해 각 열의 헤더에 할당되어 있는 QTableWidgetItem을 호출한 뒤 text() 메서드로 각 열 헤더의 라벨을 가져올 수 있다

 

[예제 코드]

if __name__ == '__main__':
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import *

    app = QCoreApplication.instance()
    if app is None:
        app = QApplication(sys.argv)

    # 헤더 라벨 설정
    table = QTableWidget()
    hlabels = [f'COL {x + 1}' for x in range(5)]
    table.setColumnCount(len(hlabels))
    table.setHorizontalHeaderLabels(hlabels)
    table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

    # 헤더 라벨들을 리스트로 가져오기
    test = [table.horizontalHeaderItem(x).text() for x in range(table.columnCount())]

    table.show()
    app.exec_()

pythonic하게 for문을 쓰지 않고 한줄로 리스트 형식으로 각 열의 헤더 라벨을 리스트화했다 (test)

 

[실행 결과]

horizontalHeaderItem을 통해 호출된 객체의 클래스는 QTableWidgetItem이다

In [1]: print(type(table.horizontalHeaderItem(0)))
Out[1]: <class 'PyQt5.QtWidgets.QTableWidgetItem'>

test를 print해보면 setHorizontalHeaderLabels로 설정한 라벨들이 반환된 것을 알 수 있다

In [2]: print(test)
Out[2]: ['COL 1', 'COL 2', 'COL 3', 'COL 4', 'COL 5']
반응형