1. Qt for Python 초기 설정

더보기

1. 현재 상황:

  • qt for python 프로젝트를 실행하면
     main.py가 아니라 widget.py가 시작 파일로 설정되어 있음
  • 구조와 유지보수, 교육 측면에서는 main.py를 시작 파일로 두는 쪽이 더 합당합니다.

 

 

 

 

2. 구조상 아쉬운 점

  • 역할 분리(SRP)” 측면
    • Widget 클래스는 UI(화면) 를 정의하는 역할
    • QApplication 생성, 프로그램 시작/종료 관리 등은 앱 실행부 역할
    • 이 둘을 한 파일에 섞어 놓으면:
      • 작은 프로젝트에서는 괜찮지만
      • 조금만 커져도 “UI + 실행부 + 로직” 이 한 파일에 엉키는 구조가 되기 쉽습니다.
  • 확장/리팩터링 시 제약
    • 나중에 QMainWindow로 바꾸거나
    • 여러 화면, 여러 위젯, 여러 탭, 서브 윈도우들을 만들고 싶을 때
      → widget.py가 실행 파일이면 구조를 다시 뜯어고치는 일이 생기기 쉽습니다.

 

 

 

 

3. 권장 구조

  • 권장 패턴: main.py + widget.py 역할 분리
# widget.py
from PySide6.QtWidgets import QWidget, QVBoxLayout, QPushButton, QLabel

class Widget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setWindowTitle("QTabWidget 데모")

        label = QLabel("메인 위젯입니다.")
        btn = QPushButton("클릭")

        layout = QVBoxLayout(self)
        layout.addWidget(label)
        layout.addWidget(btn)
  • 여기에는 QApplication, app.exec() 같은 실행 코드 없음
  • 그냥 “화면이 어떤 모양인지”만 정의

 

# main.py
import sys
from PySide6.QtWidgets import QApplication
from widget import Widget   # 우리가 만든 위젯 불러오기


def main():
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec())


if __name__ == "__main__":
    main()

이렇게 하면:

  • “프로그램의 시작은 항상 main.py” 라는 규칙이 생깁니다.
  • UI 관련 코드는 widget.py로 분리 → 구조가 훨씬 깔끔
  • 나중에:
    • main.py에서 인자 처리, 설정 파일 로드, 로깅 초기화 등
    • “앱 전체”에 관련된 초기화 코드를 넣기 쉬움

 

2. Qt for Python 실행 파일 설정 방법

더보기