본문 바로가기

강의/Python 기초

Chapter 19. GUI 계산기 만들기

반응형

tkinter 활용

이번 시간에는 파이썬의 tkinter를 사용해서 GUI 계산기 프로그램을 만들어 보겠습니다.

GUI는 마우스로 버튼을 누르면서 사용하는 화면 프로그램을 말합니다.

예를 들어 우리가 스마트폰 계산기 앱에서 숫자 버튼을 누르는 것처럼, 파이썬에서도 버튼이 있는 계산기를 만들 수 있습니다.


1. GUI 계산기란?

지금까지 만든 콘솔 계산기는 키보드로 숫자를 입력했습니다.

하지만 GUI 계산기는 화면에 버튼이 있습니다.

사용자는 버튼을 클릭해서 숫자와 연산자를 입력하고, 계산 결과를 화면에서 바로 확인할 수 있습니다.


2. 이번 프로그램에서 사용할 기능

이번 GUI 계산기에는 다음 기능이 들어갑니다.

  • 숫자 버튼
  • 더하기 +
  • 빼기 -
  • 곱하기 *
  • 나누기 /
  • 계산하기 =
  • 전체 지우기 C

3. 프로그램 전체 코드

import tkinter as tk

# 버튼을 눌렀을 때 실행되는 함수
def click_button(value):
    current = entry.get()
    entry.delete(0, tk.END)
    entry.insert(0, current + value)

# 계산 버튼을 눌렀을 때 실행되는 함수
def calculate():
    try:
        result = eval(entry.get())
        entry.delete(0, tk.END)
        entry.insert(0, str(result))
    except:
        entry.delete(0, tk.END)
        entry.insert(0, "오류")

# 지우기 버튼을 눌렀을 때 실행되는 함수
def clear():
    entry.delete(0, tk.END)

# 창 만들기
window = tk.Tk()
window.title("GUI 계산기")
window.geometry("300x400")

# 숫자와 결과를 보여주는 입력창
entry = tk.Entry(window, font=("Arial", 24), justify="right")
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

# 버튼 목록
buttons = [
    "7", "8", "9", "/",
    "4", "5", "6", "*",
    "1", "2", "3", "-",
    "0", "C", "=", "+"
]

# 버튼 만들기
row = 1
col = 0

for button in buttons:
    if button == "=":
        btn = tk.Button(window, text=button, font=("Arial", 18), width=5, height=2,
                        command=calculate)
    elif button == "C":
        btn = tk.Button(window, text=button, font=("Arial", 18), width=5, height=2,
                        command=clear)
    else:
        btn = tk.Button(window, text=button, font=("Arial", 18), width=5, height=2,
                        command=lambda value=button: click_button(value))

    btn.grid(row=row, column=col, padx=5, pady=5)

    col += 1
    if col > 3:
        col = 0
        row += 1

# 창 실행
window.mainloop()

4. 코드 설명

import tkinter as tk

import tkinter as tk

tkinter는 파이썬에서 창, 버튼, 입력창 같은 화면을 만들 때 사용하는 도구입니다.

쉽게 말하면 파이썬으로 작은 앱 화면을 만들 수 있게 도와주는 친구입니다.


5. 버튼을 눌렀을 때 동작

def click_button(value):
    current = entry.get()
    entry.delete(0, tk.END)
    entry.insert(0, current + value)

이 함수는 숫자 버튼이나 연산자 버튼을 눌렀을 때 실행됩니다.

예를 들어 사용자가 7 버튼을 누르면 입력창에 7이 들어갑니다.

그다음 + 버튼을 누르면 입력창은 7+가 됩니다.


6. 계산하기

def calculate():
    try:
        result = eval(entry.get())
        entry.delete(0, tk.END)
        entry.insert(0, str(result))
    except:
        entry.delete(0, tk.END)
        entry.insert(0, "오류")

= 버튼을 누르면 계산이 실행됩니다.

예를 들어 입력창에 10+5가 있으면 결과는 15가 됩니다.

만약 잘못 입력하면 오류라고 표시됩니다.


7. 전체 지우기

def clear():
    entry.delete(0, tk.END)

C 버튼을 누르면 입력창에 있는 내용이 모두 지워집니다.

계산기를 처음 상태로 되돌리는 기능입니다.


8. 계산기 창 만들기

window = tk.Tk()
window.title("GUI 계산기")
window.geometry("300x400")

이 코드는 계산기 프로그램 창을 만드는 부분입니다.

  • title() : 창 제목 정하기
  • geometry() : 창 크기 정하기

9. 입력창 만들기

entry = tk.Entry(window, font=("Arial", 24), justify="right")
entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10)

입력창은 사용자가 누른 숫자와 계산 결과를 보여주는 곳입니다.

계산기의 화면 역할을 합니다.


10. 버튼 만들기

buttons = [
    "7", "8", "9", "/",
    "4", "5", "6", "*",
    "1", "2", "3", "-",
    "0", "C", "=", "+"
]

계산기에 들어갈 버튼 이름을 리스트에 저장했습니다.

리스트에 저장해 두면 버튼을 하나씩 자동으로 만들 수 있습니다.


11. 실행 결과

프로그램을 실행하면 작은 계산기 창이 나타납니다.

사용자는 숫자 버튼과 연산자 버튼을 눌러 계산할 수 있습니다.

예시:

10 + 5 = 15
8 * 3 = 24
20 / 4 = 5.0

12. 정리

이번 시간에는 tkinter를 사용해서 GUI 계산기를 만들어 보았습니다.

콘솔 계산기보다 더 실제 프로그램처럼 보입니다.

버튼을 클릭해서 계산할 수 있기 때문에 초보자도 쉽게 사용할 수 있습니다.


13. 더 만들어 볼 수 있는 기능

GUI 계산기가 완성되면 다음 기능도 추가해 볼 수 있습니다.

  • 소수점 버튼 추가
  • 지우기 버튼 하나씩 삭제 기능 추가
  • 계산 기록 저장
  • 버튼 색상 꾸미기
  • 계산기 크기 변경

이 기능들을 추가하면 더 멋진 계산기 프로그램을 만들 수 있습니다.


GUI 계산기 동작 구조도

반응형