클럽에서 권고하는 사전과제 중 '웹개발 종합반' 수업은 이미 수강했기에,
파이썬 수업 사전과제를 먼저 시작했음.
ㄱㄱ
[강의] - 파이썬활용 | 7. 파이썬 기초 GUI 계산기 만들기 :: tkinter | 코딩나우
https://www.youtube.com/watch?v=rqif36EDSOI
import tkinter as tk
disValue = 0
operator = {'+':1, '-':2, '/':3, '*':4, 'C':5, '=':6}
stoValue = 0
opPre = 0
newNum = 0
def numberClick(value):
print(value)
global disValue, opPre, newNum
if newNum == 1:
disValue = value
newNum = 0
else:
disValue = (disValue*10) + value
strValue.set(disValue)
def clear():
global disValue, stoValue, opPre, newNum
disValue = 0
stoValue = 0
opPre = 0
newNum = 0
strValue.set(disValue)
def operatorClick(value):
print(value)
global disValue, operator, stoValue, opPre, newNum
op = operator[value]
if disValue == 0:
opPre = 0
elif op == 5:
clear()
elif op == 6:
if opPre == 0:
disValue = disValue + 0
elif opPre == 1:
disValue = stoValue + disValue
elif opPre == 2:
disValue = stoValue - disValue
elif opPre == 3:
disValue = stoValue / disValue
elif opPre == 4:
disValue = stoValue * disValue
strValue.set(disValue)
stoValue = 0
opPre = 0
newNum = 1
else:
if opPre == 0:
stoValue = disValue
elif opPre == 1:
stoValue = stoValue + disValue
elif opPre == 2:
stoValue = stoValue - disValue
elif opPre == 3:
stoValue = stoValue / disValue
elif opPre == 4:
stoValue = stoValue * disValue
opPre = op
newNum = 1
disValue = stoValue
strValue.set(disValue)
def buttonClick(value):
try:
value = int(value)
numberClick(value)
except:
operatorClick(value)
win = tk.Tk()
win.title('계산기')
strValue = tk.StringVar()
strValue.set(str(disValue))
dis = tk.Entry(win, textvariable=strValue, justify='right', bg='white', fg='black')
dis.grid(column=0, row=0, columnspan = 4, ipadx=80, ipady=30)
calItem = [
['1','2','3','4'],
['5','6','7','8'],
['9','0','+','-'],
['/','*','C','=']
]
for i,items in enumerate(calItem):
for k,item in enumerate(items):
try:
color = int(item)
color = 'gray'
except:
color = 'green'
bt = tk.Button(win,
text=item,
width=10,
height=5,
bg=color,
fg='black',
command = lambda cmd=item: buttonClick(cmd)
)
bt.grid(column=k, row=(i+1))
win.mainloop()
강의 내용 따라서 만들긴했는데 기능이 일부 아쉬운 점이 있었음.
1+1=2 처럼 연산을 한번 할 때는 잘 되지만,
1+1+1=3 처럼 한번 이상의 연산을 할 경우엔 작동이 안 되드라
그래서 이래저래 뜯어고치고 해봤지만 잘 안됨...
만족스럽진 않지만 결국 위에 문제는 해결했다. (지저분하게)
근데 내 계산기 넘 못생김 ㅠ
'내일배움캠프 > 사전과제' 카테고리의 다른 글
[내일배움캠프] - 사전과제3 : 파이썬으로 게임 만들기2 (0) | 2022.04.16 |
---|---|
[내일배움캠프] - 사전과제2 : 파이썬으로 게임 만들기 (0) | 2022.04.16 |