✔ Python/4. GUI Programming

QtWidegets 모듈 vs QtWidegets 클래스

  • -

 

주제: [PyQt 프로그래밍] PyQt6 사용방법 : QtWideget 모듈 vs QtWideget 클래스
작성: 2023-10-23

안녕하세요, 개발자 루카스입니다.

PyQt는 Python 기반의 GUI 프레임워크로, 사용자 인터페이스를 개발하고 사용자와 상호작용하는데 탁월한 도구입니다. 그런데 PyQt 사용하는 방식은 두 가지 주요 방식이 있습니다. 오늘은 PyQt6 사용함에 있어 두가지의 다른 접근방식에 대해 이야기하려고 합니다.

첫 번째 방식은 QtWideget 모듈을 활용하는 방법이며, 두 번째 방식은 QtWideget 클래스를 활용하는 방식입니다.
두 가지 방식을 비교하여 어떤 것을 선택하면 좋을지 살펴보도록 하겠습니다. 


import sys

from PyQt6.QtWidgets import QApplication, QCheckBox, QMainWindow, QVBoxLayout, QWidget

class MyApp(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Widgets App")
        self.statusBar()

        # Create layout and add widget
        layout = QVBoxLayout()
        layout.addWidget(QCheckBox())

        # Create a QWidget and set the layout
        central_widget = QWidget()
        central_widget.setLayout(layout)

        # Set the central widget
        self.setCentralWidget(central_widget)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyApp()
    window.show()
    app.exec()

모듈의 장/단점

  1. 코드 가독성 향상
    - QApplication, QCheckBox, QMainWindow 과 직접적으로 필요한 모듈을 임포트(import)함
    - 클래스 또는 함수를 사용하는지 파악 용이
  2. 코드 간결화
    - 모듈을 사용하면 클래스와 함수 이름을 직접 호출하여 코드가 간결해짐
  3. 모듈 구조 혼동
    - 그림 참조
  4. 클래스 또는 함수의 충돌 가능성
    - 모듈에서 직접 클래스와 함수를 호출하는 경우, 클래스 또는 함수 이름이 충돌할 수 있음

모듈활용이 많아지는 경우, 모듈구조 혼동 야기

 

import sys
from PyQt6 import QtWidgets

class MyApp(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Widgets App")
        self.statusBar()

        # Create layout and add widget
        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(QtWidgets.QCheckBox())

        # Create a QWidget and set the layout
        central_widget = QtWidgets.QWidget()
        central_widget.setLayout(layout)

        # Set the central widget
        self.setCentralWidget(central_widget)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = MyApp()
    window.show()
    app.exec()

클래스의 장/단점

  1. 초기설정 간결
    - PyQt6의 QtWidgets 클래스는 모듈 구조를 사용하지 않음
    - 개별 모듈에 대한 임포트 없이 클래스를 사용할 수 있어 초기 설정이 간결함
  2. 클래스 이름 충돌 최소화
    - 클래스 이름이 모듈에서 분리되어 있으므로 이름 충돌 최소화
  3. 코드가 길어질 수 있음
    - 클래스를 사용할 때 모듈 이름을 생략할 수 없으므로 코드가 더 길어짐
  4. 효율성 저하
    - 여러 곳에서 같은 클래스를 사용해야 할 때, 같은 클래스 이름을 반복해서 입력해야함

 

각 방식에는 장/단점이 있으며, 선택은 프로젝트 요구 사항, 개발자 선호도 및 팀의 코딩 스타일에 따라 다를 수 있습니다. 

방식 QtWidgets 모듈 QtWidgets 클래스
장점 - 코드의 가독성이 높음
- 코드 간결화
- 초기설정 간단함
- 클래스 이름 충돌 우려 최소회
단점 - 모듈 구조 혼란 야기
- 클래스 또는 함수 이름 충돌 가능성
- 코드 가독성이 떨어짐
- 코드 중복 가능성
728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.