본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/python

Qt Designer] QTableWidget 배우기

by ToolBOX01 2026. 8. 20.
반응형

■ QTableWidget

여러 열(Column)로 정보를 나누어 보여주어야 할 때는 QTableWidget을 사용 합니다.

1.행(Row)과 열(Column) 구조: 엑셀처럼 표 형태로 데이터를 관리할 수 있어 번호, 파일명, 파일 크기를 각각 칸별로 깔끔하게 배치할 수 있습니다.

2. Qt Designer에서 배치 방법:

  • 위젯 박스에서 Table Widget을 드래그해서 폼에 놓습니다.
  • objectName을 적절하게 지정합니다 (예: fileTableWidget).

3. 컬럼(열) 개수 설정: 코드나 디자이너 속성에서 열 개수를 2개( 예시 : 파일 이름, 파일 사이즈)로 설정해 주면 됩니다.

QTableWidget

  • 상단: selectButton (폴더 선택 버튼)
  • 하단: fileTableWidget (번호, 파일 이름, 파일 사이즈 3개 열이 미리 세팅된 표 위젯)
  • 레이아웃(QVBoxLayout)을 적용해 두어 창 크기를 조절해도 버튼과 표가 깔끔하게 반응하도록 구성했습니다.

file_list_ui.ui
0.00MB
file_list_ui_ui.py
0.00MB

 

● 선택된 폴더에 포함된 파일 이름 가져오기 파이썬 코드

file_list.py
0.00MB

사용자가 컴퓨터의 특정 폴더를 선택하면, 그 안의 파일 목록(하위 폴더 제외)을 불러와서 파일 이름과 용량을 계산해 표(QTableWidget) 형식으로 보여주는 데스크톱 앱입니다.

import os
import sys
from PySide6.QtWidgets import (
    QApplication,
    QFileDialog,
    QHeaderView,
    QMainWindow,
    QTableWidgetItem,
)

from file_list_ui_ui import Ui_MainWindow


class MainWindow(QMainWindow):

  def __init__(self):
    super().__init__()
    self.ui = Ui_MainWindow()
    self.ui.setupUi(self)

    # 1. 테이블 열 개수가 2개(파일 이름, 파일 사이즈)일 때의 너비 설정
    header = self.ui.fileTableWidget.horizontalHeader()
    header.setSectionResizeMode(0, QHeaderView.Stretch)  # 파일 이름 자동 확장
    self.ui.fileTableWidget.setColumnWidth(1, 100)  # 파일 사이즈 100px 고정

    # 2. 버튼 클릭 시그널 연결
    self.ui.selectButton.clicked.connect(self.load_folder_files)

  def load_folder_files(self):
    folder_path = QFileDialog.getExistingDirectory(self, "폴더 선택")
    if folder_path:
      all_items = os.listdir(folder_path)

      # 하위 폴더 제외하고 파일만 필터링
      file_list = [
          item
          for item in all_items
          if os.path.isfile(os.path.join(folder_path, item))
      ]

      # 행 개수 설정
      self.ui.fileTableWidget.setRowCount(len(file_list))

      for index, file_name in enumerate(file_list):
        file_path = os.path.join(folder_path, file_name)

        # 파일 사이즈 계산
        file_size_bytes = os.path.getsize(file_path)
        file_size_kb = f"{file_size_bytes / 1024:.1f} KB"

        # 아이템 생성 (이제 번호 열은 만들지 않고 이름과 사이즈만 생성)
        item_name = QTableWidgetItem(file_name)
        item_size = QTableWidgetItem(file_size_kb)

        # 테이블에 집어넣기 (0번 열: 파일 이름, 1번 열: 파일 사이즈)
        self.ui.fileTableWidget.setItem(index, 0, item_name)
        self.ui.fileTableWidget.setItem(index, 1, item_size)


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

 

 

반응형