티스토리 뷰

안녕하세요 탐구소년입니다. 

 

파이썬 문법을 이제 막 학습하신 분들이 추가적인 공부를 위해 많이 해보시는 것 중 하나로 파이썬을 활용한 GUI 프로그래밍을 꼽을 수 있는데요. 오늘은 파이썬 GUI 프로그래밍에 자주 사용되는 모듈인 tkinter를 사용해서 작성한 복리 계산기 코드를 준비해봤습니다.

 

우리가 저축이나 투자를 하게 되면 우리의 돈에 이자가 붙게 마련입니다. 그런데 이자가 붙는 방식은 한 가지만 있는 게 아니라 단리와 복리 두 가지가 있어 어떤 방식의 저축 상품을 선택하냐에 따라 최종 수익금이 달라지게 됩니다. 여기서는 그 중에서도 복리 방식의 계산을 적용하여 코드를 작성했으니 유념하시고요. 혹시라도 단리와 복리의 차이가 궁금하신 분들은 아래의 링크를 참고해주셔도 좋을 것 같습니다. 제 글이에요.

 

https://penguingoon.tistory.com/126

 

자, 그럼 이제 코드를 보겠습니다.

 

 

코드(tkinter_interest.py)

 

'''
원금, 수익률, 투자 기간(개월수)을
입력하고 버튼을 누르면 최종 수령금을
계산하여 결과를 알려주는 프로그램입니다.
by 탐구소년
'''
from tkinter import *

from tkinter import messagebox

# 창(window) 객체 성생
wd = Tk()


# 원금, 이자율, 투자 기간 변수
origin = IntVar()

rate = IntVar()
period = IntVar()

# 최종 수령 금액 계산하는 함수
def calculate() :

    org = origin.get()
    rat = rate.get() / 100 + 1
    per = period.get()

    messagebox.showinfo("결과", str(org * (rat ** per)))

# 위젯 생성
lb1 = Label(wd, text="원금(원)")

lb2 = Label(wd, text="이자율(%)")
lb3 = Label(wd, text="투자 기간(월)")
text1 = Entry(wd, textvariable=origin)
text2 = Entry(wd, textvariable=rate)
text3 = Entry(wd, textvariable=period)
btn = Button(wd, text="계산하기", command=calculate)

# 위젯 배치 (grid 방식)
lb1.grid(row=0, column=0)

lb2.grid(row=1, column=0)
lb3.grid(row=2, column=0)
text1.grid(row=0, column=1)
text2.grid(row=1, column=1)
text3.grid(row=2, column=1)
btn.grid(row=3, column=1)

# 메인루프 돌리즈아
wd.mainloop()

 

tkinter를 임포트하여 사용했습니다. tkinter의 Tk 클래스를 사용하여 창을 만들고, 그 위에 여러가지 위젯들을 추가하고 거기에 기능을 더해 코드를 완성했습니다. 프로그램을 실행시키면 아래와 같이 사용하실 수 있어요(맥북에서 실행하였습니다만 윈도우에서도 잘 됩니다).

 

실행시 위와 같은 창이 하나 뿅하고 뜹니다. 숫자를 입력해보겠습니다.

 

 

원금 100만원을 12개월 동안 투자할 건데, 매월 2%씩 복리로 수익이 나면 최종 수령금이 얼마나 될까요? '계산하기'를 눌러보겠습니다.

 

그렇습니다. 126만 8천 2백 4십 1원의 돈을 수령할 수 있게 됩니다. tkinter에서 messagebox를 가져다가 그것을 통해서 결과를 표시하고 있어요. 'OK'를 누르면 메시지박스는 사라지고 다시 계산을 할 수 있게 돼요. 그나저나.. 복리의 힘은 참 대단하네요. 그쵸? 이자가 한 번만 붙는 단리에 비해 수익금이 훨씬 크니 말이죠. 그걸 프로그래밍을 통해 계산할 수가 있다니 그것도 대단합니다^_^

 

위의 코드 동작은 이 정도가 전부입니다. 코드를 복사해서 실행시키면 실행이 잘 될 겁니다. 코드에 대한 자세한 설명은 분량 조절 관계상 작성하지 않았으니 양해 부탁드립니다. 

 

감사합니다^^

 

 

 

 

댓글
공지사항