인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Nole님의 프로필 이미지

작성한 질문수

[Level 1] Qt를 이용한 Python 프로그래밍: 입문편

Qt Designer툴을 이용한 예제 구현

exe 배포 시 .ui 파일 처리하는 권장하는 방법이 있나요?

작성

·

123

1

안녕하세요

.ui 파일을 uic를 통해 .py로 변환한 후 소스코드에 포함하여

exe 파일로 배포하는 것과

.ui 파일을 pyinstaller의 --add-data 옵션을 사용하여 .ui 파일을 포함하여 exe 파일로 배포하는 것의 차이점과

어떤 방법을 권장하시는지 궁금합니다.

답변 1

0

김대진님의 프로필 이미지
김대진
지식공유자

안녕하세요.

PySide6 프로젝트에서 .ui 파일을 배포하는 방식에 따라 두 가지 접근 방식을 비교해 보겠습니다.


1. uic를 통해 .ui 파일을 .py로 변환 후 포함하여 배포

장점

  • 단일 코드 파일: .ui 파일이 .py 파일로 변환되기 때문에 별도의 .ui 파일을 관리할 필요가 없습니다.

  • 성능: 런타임에 .ui 파일을 읽고 파싱하는 작업이 생략되므로 약간의 성능 이점이 있습니다.

  • 코드 일관성: UI 구성 요소를 Python 코드로 변환하면 IDE의 코드 탐색 및 자동 완성 기능을 사용할 수 있어 개발 편의성이 증가합니다.

단점

  • 변경 시 번거로움: .ui 파일을 수정할 경우, 다시 uic를 사용해 .py로 변환해야 하며, 이는 반복 작업을 초래할 수 있습니다.

  • 가독성 저하: 변환된 .py 파일은 사람이 읽기 어렵고 유지보수 시 불편할 수 있습니다.

  • 소스 코드 확장성 제한: .ui 파일을 Python 코드로 변환하면 디자인이 코드로 하드코딩되어, 나중에 .ui 파일 기반으로 디자인을 변경하려면 추가 작업이 필요합니다.


2. PyInstaller의 --add-data 옵션을 사용해 .ui 파일을 포함하여 배포

장점

  • 디자인 파일 유지: .ui 파일을 그대로 포함하므로, UI 수정이 필요할 경우 .ui 파일만 수정하면 됩니다. 이로 인해 디자인 변경이 빠르고 편리합니다.

  • 분리된 코드와 디자인: UI 파일과 Python 코드가 명확히 분리되므로, 유지보수성과 협업 효율성이 높아집니다.

  • 변환 과정 생략: .ui 파일을 변환하지 않아도 되므로 반복 작업이 줄어듭니다.

단점

  • 런타임 파일 로드: .ui 파일은 런타임에 읽고 파싱해야 하므로, 배포 후 처음 UI를 로드할 때 약간의 지연이 있을 수 있습니다.

  • 추가 파일 관리: .ui 파일을 포함하는 방식이므로 PyInstaller에 포함시키기 위한 경로 설정이나 관리가 필요합니다.


권장 방법

상황에 따른 선택

  1. 프로젝트가 단순하고 변경 가능성이 적은 경우:

    • uic를 통해 .ui 파일을 .py로 변환하여 사용하는 것이 적합합니다.

    • 이유: 실행 속도와 단일 파일 관리 측면에서 유리하며, 초기 개발 후 큰 변경이 없는 경우 효율적입니다.

  2. 프로젝트가 복잡하고 UI 변경이 자주 발생하거나 디자이너와 협업이 필요한 경우:

    • PyInstaller의 --add-data 옵션을 사용하여 .ui 파일을 포함하는 방식을 추천합니다.

    • 이유: 디자인과 로직이 분리되어 유지보수성과 확장성이 뛰어나며, 수정이 발생해도 빠르게 대응할 수 있습니다.


개인적인 추천

대부분의 경우, --add-data 옵션을 활용한 .ui 파일 배포 방식을 권장합니다. 이유는 다음과 같습니다:

  • Qt Designer로 UI를 변경할 수 있는 자유를 유지할 수 있습니다.

  • 유지보수가 용이하며, 파일 구조가 명확합니다.

  • UI를 .ui 파일로 유지하면 협업 시 디자이너와의 역할 분담이 쉬워집니다.

다만, 특정 상황(예: 단순 도구 제작, 변경 가능성 없음 등)에서는 변환 방식을 고려해볼 수도 있습니다. 장기적인 확장성과 유지보수성을 중요시한다면 .ui 파일 배포 방식을 선택하세요.

Nole님의 프로필 이미지

작성한 질문수

질문하기