상세 컨텐츠

본문 제목

계산기 tkinter 오류 해결

python

by bumychoi 2025. 4. 4. 11:04

본문

수정코드 

import tkinter as tk

win =  tk.Tk()
win.title("계산기")
# win.geometry("800x800")
win.resizable(False,False)
win.config(padx=10,pady=10, bg="blue")

def click(digit):
    if digit=="←":
        input_entry.delete(len(input_entry.get())-1)
    else:
        input_entry.insert(tk.END,digit)

def del_digit():
    input_entry.delete(0,tk.END)
    result_label.config(text="")

def calculate():

    try:
        reslut = eval(input_entry.get())
    except:
        result_label.config(text="계산식 오류")
    else:
        result_label.config(text=reslut)
        input_entry.delete(0,tk.END)
   
   


digits=[
    ["7","8","9","*"],
    ["4","5","6","/"],
    ["1","2","3","-"],
    ["0",".","←","+"],
]

input_entry = tk.Entry(win,width=30, font=("궁서체",20),bg="yellow"
                       ,justify="right")

input_entry.grid(column=0,row=0,columnspan=4,pady=15)
input_entry.focus()

result_label = tk.Label(win, text="연습",width=20,font=("나눔바른펜",30),bg="white")
result_label.grid(column=0, row=1,pady=8,columnspan=4)

for r in range(4):
    for c in range(4):
        digit=digits[r][c]
        button = tk.Button(win,text=digit,width=8,font=("나눔바른펜",15,"bold"),
                           bg="pink", command=lambda x=digit:click(x))
        button.grid(column=c,row=r+2,pady=2)

clear_button = tk.Button(win,text="C",width=17,font=("나눔바른펜",15,"bold"),
                         bg="yellow",command=del_digit)
clear_button.grid(column=0,row=6,columnspan=2,pady=5)

cal_button = tk.Button(win,text="=",width=17,font=("나눔바른펜",15,"bold"),
                       bg="yellow",command=calculate)
cal_button.grid(column=2,row=6,columnspan=2,pady=5)

win.mainloop()


 

 

오류코드

import tkinter as tk

win =  tk.Tk()
win.title("계산기")
# win.geometry("800x800")
win.resizable(False,False)
win.config(padx=10,pady=10, bg="blue")

def click(digit):
    if digit=="←":
        input_entry.delete(len(input_entry.get())-1)
    else:
        input_entry.insert(tk.END,digit)

def del_digit():
    input_entry.delete(0,tk.END)

def calculate():
    reslut = tk.eval(input_entry.get())   # 여기  eval만 사용
    result_label.config(text=reslut)


digits=[
    ["7","8","9","*"],
    ["4","5","6","/"],
    ["1","2","3","-"],
    ["0",".","←","+"],
]

input_entry = tk.Entry(win,width=30, font=("궁서체",20),bg="yellow"
                       ,justify="right")

input_entry.grid(column=0,row=0,columnspan=4,pady=15)
input_entry.focus()

result_label = tk.Label(win, text="연습",width=20,font=("나눔바른펜",30),bg="white")
result_label.grid(column=0, row=1,pady=8,columnspan=4)

for r in range(4):
    for c in range(4):
        digit=digits[r][c]
        button = tk.Button(win,text=digit,width=8,font=("나눔바른펜",15,"bold"),
                           bg="pink", command=lambda x=digit:click(x))
        button.grid(column=c,row=r+2,pady=2)

clear_button = tk.Button(win,text="C",width=17,font=("나눔바른펜",15,"bold"),
                         bg="yellow",command=del_digit)
clear_button.grid(column=0,row=6,columnspan=2,pady=5)

cal_button = tk.Button(win,text="=",width=17,font=("나눔바른펜",15,"bold"),
                       bg="yellow",command=calculate)
cal_button.grid(column=2,row=6,columnspan=2,pady=5)

win.mainloop()


 

user@DESKTOP-6MGP89V MINGW64 ~/Desktop/tkinter 
$ python cal.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 1968, in __call__
    return self.func(*args)
           ^^^^^^^^^^^^^^^^
  File "C:\Users\user\Desktop\tkinter\cal.py", line 19, in calculate
    reslut=tk.eval(input_entry.get())
           ^^^^^^^
AttributeError: module 'tkinter' has no attribute 'eval'

user@DESKTOP-6MGP89V MINGW64 ~/Desktop/tkinter 
$ python cal.py

user@DESKTOP-6MGP89V MINGW64 ~/Desktop/tkinter 
$ python cal.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\tkinter\__init__.py", line 1968, in __call__
    return self.func(*args)
           ^^^^^^^^^^^^^^^^
  File "C:\Users\user\Desktop\tkinter\cal.py", line 19, in calculate
    reslut = tk.eval(input_entry.get())        
             ^^^^^^^
AttributeError: module 'tkinter' has no attribute 'eval'

'python' 카테고리의 다른 글

똥피하기 게임  (0) 2025.04.06
tikiner 활용  (0) 2025.03.27
파이썬 로또 번호 조회기  (0) 2025.03.24
나도 코딩 보며 게임만들기  (0) 2025.02.27
다시 만들기  (0) 2025.01.06

관련글 더보기