Develop/Python

[파이썬] tkinter을 활용한 계산기 프로그램

JuniTech 2023. 5. 13. 22:49
728x90

GUI 계산기

import tkinter as tk

class Calculator:	# Calculator 클래스 정의 : 계산기의 뼈대 역할을 하며 기능적인 GUI 계산기를 만드는 데 필요한 모든 기능을 포함
    def __init__(self, master):
        self.master = master
        master.title("Calculator")

        # 입력창(디스플레이 위젯 설정)
        self.display = tk.Entry(master, width=30, justify='right', font=('Arial', 13))
        self.display.grid(row=0, column=0, columnspan=4, pady=5)

        # 버튼
        self.create_button('7', 1, 0)
        self.create_button('8', 1, 1)
        self.create_button('9', 1, 2)
        self.create_button('/', 1, 3)

        self.create_button('4', 2, 0)
        self.create_button('5', 2, 1)
        self.create_button('6', 2, 2)
        self.create_button('*', 2, 3)

        self.create_button('1', 3, 0)
        self.create_button('2', 3, 1)
        self.create_button('3', 3, 2)
        self.create_button('-', 3, 3)

        self.create_button('0', 4, 0)
        self.create_button('.', 4, 1)
        self.create_button('C', 4, 2)
        self.create_button('+', 4, 3)

        self.create_button('=', 5, 0, 1, 4)

	# 버튼 생성 함수
    def create_button(self, text, row, col, rowspan=1, columnspan=1):
        button = tk.Button(self.master, text=text, height=2, width=5, font=('Arial', 16),
                           command=lambda: self.button_click(text))
        button.grid(row=row, column=col, rowspan=rowspan, columnspan=columnspan, padx=2, pady=2)
	
    # 버튼 클릭 함수
    def button_click(self, text):
        if text == 'C':
            self.display.delete(0, tk.END)
        elif text == '=':
            try:
                result = eval(self.display.get())
                self.display.delete(0, tk.END)
                self.display.insert(0, result)
            except:
                self.display.delete(0, tk.END)
                self.display.insert(0, "Error!")
        else:
            self.display.insert(tk.END, text)

root = tk.Tk()
calculator = Calculator(root)	# 계산기 인스턴스 생성
root.mainloop()

추가 설명)

eval() 함수 : 매개변수로 받은 expression(=식)을 문자열로 받아서 실행하는 함수

ex) eval("2*3") 라는 문자열이 매개변수로 들어오면 출력 값으로 6을 반환함.