PyQt개발강좌, PyQt와 Qt Designer 소개 및 사용법

PyQt는 파이썬에서 Qt 프레임워크를 활용하여 응용 프로그램을 개발할 수 있는 강력한 도구입니다. 이 강좌에서는 PyQt의 기본 개념과 Qt Designer를 활용한 GUI 설계 방법에 대해 살펴보겠습니다.

1. PyQt 소개

PyQt는 오랜 역사를 가진 Qt 라이브러리를 기반으로 한 파이썬 바인딩으로, C++로 작성된 Qt를 통해 강력한 GUI 애플리케이션을 만들 수 있게 해줍니다. PyQt는 크로스 플랫폼 개발을 지원하며, Windows, macOS, Linux에서 모두 사용할 수 있습니다.

1.1 PyQt의 주요 장점

  • 크로스 플랫폼: 한 번의 코드로 여러 운영 체제에서 실행 가능
  • 강력한 위젯 세트: 다양한 UI 요소로 복잡한 인터페이스 설계 가능
  • 신뢰성: Qt의 검증된 기술력으로 안정성과 성능 보장

1.2 PyQt 버전

PyQt에는 두 가지 주요 버전이 있습니다: PyQt4와 PyQt5. PyQt5가 최신 버전으로, 추가적인 기능과 개선된 API를 제공합니다.

2. Qt Designer란?

Qt Designer는 Qt 애플리케이션을 위한 GUI를 직관적으로 설계할 수 있는 도구입니다. 특별한 프로그래밍 지식이 없이도 마우스 클릭으로 UI를 구성할 수 있으며, 설계한 UI를 .ui 파일로 저장할 수 있습니다.

2.1 Qt Designer의 특징

  • 드래그 앤 드롭 방식의 GUI 설계
  • 위젯의 속성을 쉽게 수정 가능
  • 시각적으로 레이아웃을 확인하고 조정 가능

2.2 Qt Designer 설치

Qt Designer는 PyQt5 패키지에 포함되어 있습니다. PyQt5를 설치하면 자동으로 설치되며, 터미널에서 designer 명령어로 실행할 수 있습니다.

3. PyQt와 Qt Designer의 연계 사용법

3.1 .ui 파일 생성 및 변환

Qt Designer에서 UI를 설계한 후, 이를 파이썬 코드로 변환해야 합니다. 이 과정은 pyuic5 명령어를 사용하여 수행합니다.

pyuic5 -x mydesign.ui -o mydesign.py

위 명령어에서 mydesign.ui는 Qt Designer에서 만든 파일 이름이고, mydesign.py는 생성될 파이썬 파일의 이름입니다.

3.2 예제: 간단한 계산기 만들기

이제 Qt Designer를 사용하여 간단한 계산기를 만들어 보겠습니다. 아래의 단계에 따라 진행해 주세요.

1단계: UI 디자인

Qt Designer를 실행하고, 새로운 ‘Widget’을 선택합니다. 그 후, 다음의 위젯을 추가해주세요:

  • QLineEdit (결과 출력 창)
  • QPushButton (버튼들: 1, 2, 3, +, = 등)

이런 방식으로 UI를 디자인한 후, calculator.ui로 저장합니다.

2단계: .ui 파일을 파이썬 코드로 변환

pyuic5 -x calculator.ui -o calculator.py

3단계: 계산기 로직 구현

변환된 calculator.py 파일을 열고, 다음과 같은 예제 코드를 추가하여 계산기 로직을 구현합니다.


import sys
from PyQt5 import QtWidgets
from calculator import Ui_Form

class Calculator(QtWidgets.QWidget, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.buttons = {}
        for i in range(10):
            self.buttons[str(i)] = getattr(self, f'button_{i}')
            self.buttons[str(i)].clicked.connect(self.buttonClicked)
        self.button_plus.clicked.connect(self.operationClicked)
        self.button_equals.clicked.connect(self.equalsClicked)
        
        self.current_input = ""
        self.last_operation = ""

    def buttonClicked(self):
        sender = self.sender()
        self.current_input += sender.text()
        self.lineEdit.setText(self.current_input)

    def operationClicked(self):
        self.last_operation = self.sender().text()
        self.current_input += f" {self.last_operation} "
        self.lineEdit.setText(self.current_input)

    def equalsClicked(self):
        try:
            result = eval(self.current_input)
            self.lineEdit.setText(str(result))
            self.current_input = str(result)
        except Exception as e:
            self.lineEdit.setText("Error")
            self.current_input = ""

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = Calculator()
    window.show()
    sys.exit(app.exec_())

3.3 코드 해설

위 코드는 계산기의 기본적인 기능을 구현합니다. 각 버튼에 대한 클릭 이벤트를 연결하고, 연산과 결과 출력을 처리하는 로직을 포함하고 있습니다.

  1. 클릭 이벤트에 따른 숫자나 연산자가 입력됨.
  2. equals 버튼을 클릭하면 현재 입력된 수식을 평가.
  3. 결과를 QLineEdit에 표시.

4. 결론

이번 강좌에서는 PyQt와 Qt Designer를 이용하여 간단한 계산기를 만들어 보았습니다. PyQt는 강력한 GUI 개발 환경을 제공하며, Qt Designer를 사용하면 더 쉽고 빠르게 UI를 설계할 수 있습니다. 앞으로 더욱 복잡한 응용 프로그램을 만들기 위해 다양한 위젯과 기능을 익히시길 바랍니다.

5. 추가 자료