티스토리 뷰

9.7 사례연구: 대출 계산기(Case Study: Loan Calculator)

- 이번 챕터는 파이썬 GUI 위젯과 기하관리자, 이벤트를 사용해 대출 계산기를 만들어보는 예제이다.

- GUI 어플리케이션을 만들때에는 두가지 단계로 진행한다.

1. 라벨, 텍스트 엔트리, 버튼들이 위치할 유저 인터페이스(UI)를 직접 스케치한다.

2. 이벤트 처리를 구상한다. 버튼이 클릭되었을 때, 유저들의 입력을 얻기 위한 콜백(call back) 함수를 호출하고 대출에 관련된 정보들을 출력하는 이벤트 처리를 구상한다.

 

*대출 계산기(LoanCalculator.py)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from tkinter import * # tkinter의 모든 정의를 임포트한다.
 
class LoanCalculator:
    def __init__(self):
        window = Tk() # 창을 생성한다.
        window.title("대출 계산기"# 제목을 설정한다.
 
        Label(window, text = "연이율").grid(row = 1,
            column = 1, sticky = W)
        Label(window, text = "대출년수").grid(row = 2,
            column = 1, sticky = W)
        Label(window, text = "대출금").grid(row = 3,
            column = 1, sticky = W)
        Label(window, text = "월상환금").grid(row = 4,
            column = 1, sticky = W)
        Label(window, text = "총상환금").grid(row = 5,
            column = 1, sticky = W)
 
        self.annualInterestRateVar = StringVar()
        Entry(window, textvariable = self.annualInterestRateVar,
            justify = RIGHT).grid(row = 1, column = 2)
        self.numberOfYearsVar = StringVar()
        Entry(window, textvariable = self.numberOfYearsVar,
            justify = RIGHT).grid(row = 2, column = 2)
        self.loanAmountVar = StringVar()
        Entry(window, textvariable = self.loanAmountVar,
            justify = RIGHT).grid(row = 3, column = 2)
 
        self.monthlyPaymentVar = StringVar()
        lblMonthlyPayment = Label(window, textvariable =
            self.monthlyPaymentVar).grid(row = 4, column = 2,
                sticky = E)
        self.totalPaymentVar = StringVar()
        lblTotalPayment = Label(window, textvariable =
            self.totalPaymentVar).grid(row = 5,
                column = 2, sticky = E)
        btComputePayment = Button(window, text = "상환금 계산하기",
            command = self.computePayment).grid(
                row = 6, column = 2, sticky = E)
 
        window.mainloop() # 이벤트 루프를 생성한다.
 
    def computePayment(self):
        monthlyPayment = self.getMonthlyPayment(
            float(self.loanAmountVar.get()),
            float(self.annualInterestRateVar.get()) / 1200,
            int(self.numberOfYearsVar.get()))
        self.monthlyPaymentVar.set(format(monthlyPayment, "10.2f"))
        totalPayment = float(self.monthlyPaymentVar.get()) * 12 \
            * int(self.numberOfYearsVar.get())
        self.totalPaymentVar.set(format(totalPayment, "10.2f"))
 
    def getMonthlyPayment(self,
            loanAmount, monthlyInterestRate, numberOfYears):
        monthlyPayment = loanAmount * monthlyInterestRate / (1
            - 1 / (1 + monthlyInterestRate) ** (numberOfYears * 12))
        return monthlyPayment;
 
LoanCalculator() # GUI를 생성한다.
 
cs

 

참고 문헌 : Introduction to Programming Using Python / Y.DANIEL LIANG



본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.


교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다. 

댓글