반응형
PyQt5에서 QtableWidget을 사용할 때 컬럼 너비를 조정하는 방법입니다.
방법1
table = self.ui.tableWidget
table.setColumnWidth(0, self.width()*1/10)
table.setColumnWidth(1, self.width()*2/10)
table.setColumnWidth(2, self.width()*5/10)
table.setColumnWidth(3, self.width()*2/10)
테이블의 컬럼은 4개가 있다고 가정하고 각 컬럼의 너비를 일정한 비율로 조정합니다.
컨텐츠 길이의 장단에 관계없이 정해진 비율대로만 조정합니다.
방법2
table = self.ui.tableWidget
header = table.horizontalHeader()
header.setSectionResizeMode(0, QHeaderView.ResizeToContents)
header.setSectionResizeMode(1, QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QHeaderView.ResizeToContents)
header.setSectionResizeMode(3, QHeaderView.ResizeToContents)
컨텐츠의 길이에 따라서 자동으로 컬럼너비를 조정합니다. 하지만 테이블 전체 너비와 관계없이 컨텐츠 길이에 맞게 조절되기 때문에 마지막 컬럼이 너무 크거나 작은 문제가 있습니다.
방법3
table = self.ui.tableWidget
header = table.horizontalHeader()
twidth = header.width()
width = []
for column in range(header.count()):
header.setSectionResizeMode(column, QHeaderView.ResizeToContents)
width.append(header.sectionSize(column))
wfactor = twidth / sum(width)
for column in range(header.count()):
header.setSectionResizeMode(column, QHeaderView.Interactive)
header.resizeSection(column, width[column]*wfactor)
위의 방법1, 2를 짬뽕한 것으로 테이블 전체 너비와 컨텐츠들의 비율에 따라 자동으로 컬럼 너비를 조정합니다.
컨텐츠의 길이에 따른 각 컬럼의 너비를 비율로하여 전체 테이블 너비에 맞게 컬럼을 조정합니다. 테이블 리프레시에 삽입하면 항상 컬럼너비가 조정되도록 할 수 있습니다.
QHeaderView, resize 모드에 대한 설명은 아래 문서에서 확인할 수 있습니다.
끝!
반응형
'Software > Python' 카테고리의 다른 글
PyQt5 오버레이 레이어 Ver.2 (3) | 2020.12.03 |
---|---|
PyQt5 오버레이 레이어 (4) | 2020.12.02 |
Visual Studio Code로 만드는 파이썬 개발 환경 (0) | 2020.07.17 |
pyinstaller - 파이썬 코드를 실행파일(.exe)로 변환 (2) | 2020.07.09 |
댓글