0. 스토리

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/edfce250-5050-41ff-98a8-8fefa2a45d15/55.png

"판매량이 늘면서 동시에 계산 실수에 대한 건들이 속속 접수되고 있다냥!"

대리인 No.1은 고민했습니다. 냥이들은 대부분 수학을 제대로 배운적이 없어 계산을 잘 못하기 때문이죠.

장기적으로는 냥이들의 수학 교육을 진행하고, 인공지능을 이용해 계산을 자동으로 해주는 프로그램을 개발하며, 지금 가진 기술력으로 가장 빠르게 해결할 수 있는 방법으로는 POS기를 만들기로 결심합니다.

"개발자 대리인들을 모아냥!"

1. 기획

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5ea09048-13f1-41a3-b846-f3b4a695d9a5/11.png

2. 디자인

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/988bdd9a-b279-4b69-a796-4669121f22ea/12.png

3. 코드

POS기를 바로 만들기에는 부담이 되니, 우선은 간단한 계산기를 만들어 보도록 하겠습니다. 실행 예제를 먼저 보고 오시면 이해가 쉽습니다.

from PyQt5.QtCore import Qt
import sys
from PyQt5.QtWidgets import *

class 생선가게POS기(QWidget):

    def __init__(self):
        super().__init__()
        self.UI초기화()

    def UI초기화(self):
        self.s = ''

        self.하나 = QPushButton('1')
        self.하나.clicked.connect(lambda:self.clickedNum('1'))

        self.더하기 = QPushButton('+')
        self.더하기.clicked.connect(lambda:self.clickedNum('+'))

        self.셋 = QPushButton('3')
        self.셋.clicked.connect(lambda:self.clickedNum('3'))

        self.등호 = QPushButton('=')
        self.등호.clicked.connect(self.calc)

        세로정렬 = QHBoxLayout() 
        세로정렬.addWidget(self.하나) 
        세로정렬.addWidget(self.더하기)
        세로정렬.addWidget(self.셋)
        세로정렬.addWidget(self.등호)
       
        self.setLayout(세로정렬)
        
        self.setWindowTitle("계산기")
        self.show()
        
    def clickedNum(self, text):
        self.s += text
        print(self.s)

    def calc(self):
        print(eval(self.s))
        self.s = ''

프로그램무한반복 = QApplication(sys.argv)
실행인스턴스 = 생선가게POS기()
프로그램무한반복.exec_()

4. 상세 내용

여기서는 POS기를 만들기 위한 간단한 프로그램을 먼저 만들어봅니다. 다음 챕터에서는 계산기를 만들어보고, 3번째 챕터에서 POS기를 만들게 됩니다.

이 코드의 핵심 코드는 아래와 같습니다.

def clickedNum(self, text):
    self.s += text
    print(self.s)

def calc(self):
    print(eval(self.s))
    self.s = ''

여기서는 +연산밖에 없지만 각각의 연산 수식을 문자열로 받아 하나의 수식 문자열로 완성한 다음 eval이라는 내장함수(Built-in functions)를 사용해 문자열을 통한 수식 연산을 합니다.

5. 실행 화면