반응형
■ QTableWidget
여러 열(Column)로 정보를 나누어 보여주어야 할 때는 QTableWidget을 사용 합니다.
1.행(Row)과 열(Column) 구조: 엑셀처럼 표 형태로 데이터를 관리할 수 있어 번호, 파일명, 파일 크기를 각각 칸별로 깔끔하게 배치할 수 있습니다.
2. Qt Designer에서 배치 방법:
- 위젯 박스에서 Table Widget을 드래그해서 폼에 놓습니다.
- objectName을 적절하게 지정합니다 (예: fileTableWidget).
3. 컬럼(열) 개수 설정: 코드나 디자이너 속성에서 열 개수를 2개( 예시 : 파일 이름, 파일 사이즈)로 설정해 주면 됩니다.

- 상단: selectButton (폴더 선택 버튼)
- 하단: fileTableWidget (번호, 파일 이름, 파일 사이즈 3개 열이 미리 세팅된 표 위젯)
- 레이아웃(QVBoxLayout)을 적용해 두어 창 크기를 조절해도 버튼과 표가 깔끔하게 반응하도록 구성했습니다.
file_list_ui.ui
0.00MB
file_list_ui_ui.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())
반응형
'업무 자동화 > python' 카테고리의 다른 글
| Qt Designer] Hello World! (0) | 2026.08.20 |
|---|---|
| Qt Designer] 개발 환경 구축 (0) | 2026.08.20 |
| 파이썬 학습] 폴더 이름 가져오기 (0) | 2026.08.05 |
| 파이썬 학습] 사전(Dictionary) (0) | 2026.08.04 |
| 분석.csv → 판단 프로그램 만들기 (0) | 2026.08.03 |