728x90
import tkinter as tk
disValue = 0
operator = {'+':1, '-':2, '/':3, '*':4, 'C':5, '=':6}
stoValue = 0
opPre = 0
def numer_click(value):
# print('숫자', value)
global disValue
disValue = (disValue*10) + value
str_value.set(disValue)
def clear():
global disValue, stoValue, opPre
stoValue = 0
opPre = 0
disValue = 0
str_value.set(disValue)
def oprator_click(value):
# print('명령', value)
global disValue, operator, stoValue, opPre
op = operator[value]
if op == 5: # C
clear()
elif disValue == 0:
opPre = 0
elif opPre == 0:
opPre = op
stoValue = disValue
disValue = 0
str_value.set(disValue)
elif op == 6: # =
if opPre == 1:
disValue = stoValue + disValue
if opPre == 2:
disValue = stoValue - disValue
if opPre == 3:
disValue = stoValue / disValue
if opPre == 4:
disValue = stoValue * disValue
str_value.set(str(disValue))
disValue = 0
stoValue = 0
opPre = 0
else:
clear()
def button_click(value):
print(value)
try:
value = int(value)
numer_click(value)
except:
oprator_click(value)
win = tk.Tk()
win.title('계산기')
str_value = tk.StringVar()
str_value.set(str(disValue))
dis = tk.Entry(win, textvariable=str_value, justify='right', bg = 'white', fg='red')
dis.grid(column=0, row=0, columnspan=4, ipadx=150, ipady=30)
calItem = [['1','2','3','4'],
['5','6','7','8'],
['9','0','+','-'],
['/','*','C','=']]
for i,item in enumerate(calItem):
for k,item in enumerate(item):
try:
color = int(item)
color = 'black'
except:
color = 'green'
bt = tk.Button(win,
text=item,
width=10,
height=5,
bg =color,
fg = 'white',
command = lambda cmd=item: button_click(cmd)
)
bt.grid(column=k, row=(i+1))
# 위 calItem ~ for문으로 아래 요약 가능
# tk.Button(win, text='1', width=10, height=5).grid(column=0, row=1)
# tk.Button(win, text='2', width=10, height=5).grid(column=1, row=1)
# tk.Button(win, text='3', width=10, height=5).grid(column=2, row=1)
# tk.Button(win, text='4', width=10, height=5).grid(column=3, row=1)
#
# tk.Button(win, text='5', width=10, height=5).grid(column=0, row=2)
# tk.Button(win, text='6', width=10, height=5).grid(column=1, row=2)
# tk.Button(win, text='7', width=10, height=5).grid(column=2, row=2)
# tk.Button(win, text='8', width=10, height=5).grid(column=3, row=2)
#
# tk.Button(win, text='9', width=10, height=5).grid(column=0, row=3)
# tk.Button(win, text='0', width=10, height=5).grid(column=1, row=3)
# tk.Button(win, text='+', width=10, height=5).grid(column=2, row=3)
# tk.Button(win, text='-', width=10, height=5).grid(column=3, row=3)
#
# tk.Button(win, text='/', width=10, height=5).grid(column=0, row=4)
# tk.Button(win, text='*', width=10, height=5).grid(column=1, row=4)
# tk.Button(win, text='C', width=10, height=5).grid(column=2, row=4)
# tk.Button(win, text='=', width=10, height=5).grid(column=3, row=4)
win.mainloop()
728x90
반응형
'coding > Project' 카테고리의 다른 글
[Python] 활용편 - 05 - Class 함수(2)(계산기 만들기 with class) (0) | 2022.09.13 |
---|---|
[Python] 활용편 - 04 - Class 함수(1)(도형 넓이 계산기 만들기) (0) | 2022.09.13 |
[python] 활용편 - 03 - 게임만들기(기억력 게임) (0) | 2022.08.23 |
[python] 활용편 - 02 - 게임만들기 (풍선게임) (0) | 2022.08.23 |