Python 라이브러리인 PyQt6을 사용하여 간단한 계산기를 만드는 방법을 살펴봅니다. PyQt6는 Python의 단순성과 Qt 프레임워크의 광범위한 기능을 결합하여 대화형 애플리케이션을 구축하는 데 탁월한 선택입니다. 차근차근 우리만의 계산기를 만들어 봅시다.
[목차]
1. PyQt6 계산기 인터페이스 만들기
2. Pyqt6 계산기 실행
3. 결론 및 의견
1. PyQt6 계산기 인터페이스 만들기
계산기 사용자 인터페이스의 기본 구조를 만드는 것으로 시작하겠습니다. 즐겨 사용하는 Python IDE 또는 텍스트 편집기를 열고 calculator.py와 같은 새 Python 스크립트 파일을 만듭니다. 그런 다음 다음 코드를 추가합니다.
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLineEdit, QPushButton, QGridLayout
class Calculator(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Simple Calculator")
self.layout = QVBoxLayout()
self.display = QLineEdit()
self.layout.addWidget(self.display)
buttons = [
['7', '8', '9', '/'],
['4', '5', '6', '*'],
['1', '2', '3', '-'],
['0', '.', '=', '+']
]
grid_layout = QGridLayout()
self.layout.addLayout(grid_layout)
for row, button_row in enumerate(buttons):
for col, label in enumerate(button_row):
button = QPushButton(label)
button.clicked.connect(lambda checked, label=label: self.handle_button(label))
grid_layout.addWidget(button, row, col)
self.setLayout(self.layout)
def handle_button(self, label):
if label == '=':
try:
result = eval(self.display.text())
self.display.setText(str(result))
except Exception as e:
self.display.setText('Error')
else:
self.display.setText(self.display.text() + label)
def main():
app = QApplication(sys.argv)
calculator = Calculator()
calculator.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
이 코드 스니펫에서는 PyQt6에서 필요한 모듈을 가져오는 것으로 시작합니다. 애플리케이션의 기본 창을 나타내는 QWidget에서 상속되는 Calculator 클래스를 만듭니다.
Calculator 클래스의 생성자(__init__)에서 self.setWindowTitle을 사용하여 창 제목을 설정합니다. 계산기의 요소를 정렬하기 위해 세로 레이아웃(self.layout)을 만듭니다.
다음으로 계산기의 입력과 출력을 표시하기 위해 QLineEdit 위젯(self.display)을 만듭니다.
self.layout.addWidget(self.display)를 사용하여 이 위젯을 레이아웃에 추가합니다.
계산기 버튼의 레이블을 저장하기 위해 목록 목록(버튼)을 정의합니다. 각 하위 목록은 버튼 행을 나타냅니다.
QGridLayout(grid_layout)을 사용하여 그리드 패턴으로 버튼을 정렬합니다. self.layout.addLayout(grid_layout)을 사용하여 기본 레이아웃에 그리드 레이아웃을 추가합니다.
중첩 루프를 사용하여 buttons 목록을 반복하고 각 레이블에 대해 QPushButton을 생성합니다. 각 버튼의 clicked 신호를 해당 레이블을 인수로 사용하여 self.handle_button을 호출하는 람다 함수에 연결합니다. 람다 함수는 버튼을 클릭할 때 올바른 레이블이 self.handle_button에 전달되도록 클로저의 레이블을 캡처합니다. grid_layout.addWidget(button, row, col)을 사용하여 그리드 레이아웃에 각 버튼을 추가합니다.
handle_button 메서드는 버튼을 클릭할 때 디스플레이 업데이트를 담당합니다. 레이블이 '='(등호)이면 eval을 사용하여 디스플레이에 입력된 표현식을 평가하려고 시도합니다. 평가가 성공하면 결과로 디스플레이를 업데이트합니다. 그렇지 않으면 오류 메시지가 표시됩니다. 다른 레이블의 경우 이미 디스플레이에 있는 텍스트에 레이블을 추가합니다.
마지막으로 main 함수에서 QApplication 클래스의 인스턴스를 만들고 Calculator 클래스의 인스턴스를 만들고 calculator.show()를 사용하여 계산기 창을 표시하고 로 이벤트 루프를 시작합니다. sys.exit(app.exec())
2. Pyqt6 계산기 실행
스크립트를 저장하고 Python 인터프리터를 사용하여 실행합니다.
python main.py
모든 것이 순조롭게 진행되면 디스플레이와 기본 계산기의 숫자 및 연산자를 나타내는 버튼이 있는 "간단한 계산기"라는 제목의 창이 표시됩니다.
버튼을 클릭하여 산술식을 입력하고 디스플레이에서 결과를 관찰할 수 있습니다. 계산기는 더하기, 빼기, 곱하기 및 나누기 연산을 지원합니다. '=' 버튼을 누르면 표현식을 평가하고 결과를 표시합니다. 결과를 얻거나 오류가 발생한 후에도 새 표현식을 계속 입력할 수 있습니다.
3. 결론 및 의견
PyQt6을 사용하여 간단한 계산기를 만드는 방법을 살펴보았습니다. 기본 창 만들기, 레이아웃을 사용하여 위젯 배열, 신호 및 슬롯과의 사용자 상호 작용 처리를 포함하여 PyQt6 응용 프로그램의 기본 구조에 대해 배웠습니다.
[관련글]
[정보 및 유용한 팁] - 챗GPT 란? (CHAT GPT 사용)
[파이썬 (pythoon)] - 파이썬 벽돌깨기 게임 만들기 - python tkinter game
[파이썬 (pythoon)] - 파이썬 독학 과연 가능할까?
'파이썬 (pythoon)' 카테고리의 다른 글
파이썬 PyQt6 스타일링 - setStyleSheet (0) | 2023.06.28 |
---|---|
PyQt6를 사용한 간단한 로그인 프로그램 만들기 (0) | 2023.06.27 |
Python GUI Pyqt6 vs Tkinter vs PySide2 (0) | 2023.06.25 |
PyQt6 란? 파이썬 그래픽 사용자 인터페이스(GUI) (0) | 2023.06.24 |
파이썬 Tkinter 디지털 시계 프로그램 만들기 예제 (0) | 2023.06.23 |