티스토리 뷰
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
※
본 게시물은 개인적인 용도로 작성된 게시물입니다. 이후 포트폴리오로 사용될 정리 자료이니 불펌과 무단도용은 하지 말아주시고 개인 공부 목적으로만 이용해주시기 바랍니다.
교재 영어 원서를 직접 번역하여 정리한 게시물이므로 일부 오타, 의역이 존재할 수 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다.
※
'파이썬 > 파이썬 GUI' 카테고리의 다른 글
[파이썬]기하 관리자(The Geometry Managers) (0) | 2017.11.01 |
---|---|
[파이썬]캔버스 (0) | 2017.10.30 |
[파이썬]위젯 클래스 (4) | 2017.09.26 |
[파이썬 GUI]이벤트 처리하기(Processing Events) (1) | 2017.09.14 |
[파이썬]Tkinter를 이용한 GUI 프로그래밍 (1) | 2017.09.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파이썬 for
- 버츄어박스
- 자바스크립트 그래프
- 파이썬 터틀
- 백준 10451
- 파이썬 클래스
- 자바스크립트 자료구조
- 백준
- css
- 파이썬 if문
- 파이썬
- 파이썬 단계적 개선
- 파이썬 함수
- 웹
- 백준 1874
- 파이썬 객체
- 파이썬 while
- 파이썬 예제
- css 박스
- 파이썬 연산자
- 백준 11501
- 파이썬 선택문
- 파이썬 진수 변환
- 자바
- 파이썬 리스트
- 자료구조
- css 그리드
- 명품 c++ 실습
- 자바 에센셜 실습문제
- 파이썬 문자열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함