수정코드
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'