[Python_mini_projects_1] 계산기 만들기 #3. tkinter command 적용
Event 핸들링
tkinter 위젯들을 활용해 버튼 클릭이나 메뉴 클릭과 같은 이벤트 처리를 할 수 있다. 위젯의 파라미터에 command = “이벤트”를 사용해 위젯에 이벤트를 적용시킬 수 있다.
for button in buttons: # for문을 통해 buttons 리스트에 있는 요소들을 하나씩 가져와 검사
def cmd(x=button): # 모든 버튼에 cmd함수 적용
return click(x)
main_button = Button(window, text=button, width=11, height=5, padx=1,
relief="ridge", bg=color, command=cmd)
위 코드는 계산기를 만들 때 사용했던 코드의 요약본이다.
cmd라는 함수 안에 매개변수로 x(button)을 입력받은 후 command=cmd를 통해 버튼에 클릭이 일어날 때마다 cmd함수가 발생하도록 설정하였다.
# click이라는 함수 정의
def click(key):
if key == '=':
try:
result = eval(entry.get()) # entry.get() ->기입창의 텍스트를 문자열로 반환
# 0 = entry위젯이서 첫 번째 문자 / END = entry위젯에서 마지막 컨텐츠
entry.delete(0, END)
entry.insert(END, str(result))
except:
entry.insert(END, "오류가 발생했습니다.") # 정상적인 입력이 일어나지 않으면 오류 발생
elif key == 'C':
entry.delete(0, END) # 'C'를 누르면 마찬가지로 다 지우기
else:
# 누른 버튼이 '='가 아니라면 마지막으로 입력한 문자 다음으로도 계속 문자를 받을 수 있도록 설정
entry.insert(END, key)
click(x)에서 x는 key로 입력되는데
- click event가 발생하면 entry에 click한 버튼이 입력됨
- click 함수에서 입력된 버튼을 key로서 입력받아 if문을 돌게 된다.
이렇게 tkinter의 command를 활용해 event를 원하는 위젯에 전달할 수 있다.