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 코드 해설
위 코드는 계산기의 기본적인 기능을 구현합니다. 각 버튼에 대한 클릭 이벤트를 연결하고, 연산과 결과 출력을 처리하는 로직을 포함하고 있습니다.
- 클릭 이벤트에 따른 숫자나 연산자가 입력됨.
- equals 버튼을 클릭하면 현재 입력된 수식을 평가.
- 결과를 QLineEdit에 표시.
4. 결론
이번 강좌에서는 PyQt와 Qt Designer를 이용하여 간단한 계산기를 만들어 보았습니다. PyQt는 강력한 GUI 개발 환경을 제공하며, Qt Designer를 사용하면 더 쉽고 빠르게 UI를 설계할 수 있습니다. 앞으로 더욱 복잡한 응용 프로그램을 만들기 위해 다양한 위젯과 기능을 익히시길 바랍니다.