개요
PySide6를 사용하여 만든 GUI 프로그램에서 QTableWidget
의 모든 컬럼들이 GUI 화면의 남은 공간을 균등하게 채우도록 설정하는 방법에 대해서 기록해보려고 한다!
문제 상황
보통 QTableWidget
에 데이터를 표시할 때,
각 컬럼의 너비는 기본 설정에 따라 고정되어 있거나 내부 컨텐츠 크기에 맞춰 자동 조절된다.
하지만, 가끔씩 테이블의 가로 공간이 남아있어 디자인이 어색해지는 경우가 있다.
이럴 때 모든 컬럼이 화면의 전체 너비에 맞춰 균등하게 늘어나도록 하고 싶다면 어떻게 해야 할까?
QHeaderView의 리사이즈 모드
PySide6
에서는 QTableWidget
의 수평 헤더(horizontalHeader()
)에 접근해 각 컬럼의 리사이즈 모드를 설정할 수 있다.
이를 위해 QHeaderView.Stretch
옵션을 사용하면,
테이블 내 모든 컬럼이 가용한 공간을 균등하게 분할하여 채워지게 된다!
코드 예제
아래는 코드 예시로, QTableWidget의 모든 컬럼을 화면에 맞춰 자동으로 늘리는 방법을 보여준다.
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidgetItem, QHeaderView
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 모든 컬럼을 화면의 나머지 공간에 균등하게 늘리기
header = self.dataTable.horizontalHeader()
header.setSectionResizeMode(QHeaderView.Stretch)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.setWindowTitle("반응형 QTableWidget 데모")
window.resize(800, 600)
window.show()
sys.exit(app.exec())
위 예제에서는 QHeaderView.Stretch
를 사용해 모든 컬럼의 리사이즈 모드를 설정하였다.
이렇게 하면 창의 크기가 변할 때마다
각 컬럼의 너비도 자동으로 재조정되어 항상 전체 가로 공간을 균등하게 채우게 된다!
리사이즈 결과
리사이즈 모드를 적용하면 다음과 같이 예쁘게 정렬된다!