더북(TheBook)

dong_name1, dong_name2dong_code1, dong_code2를 전역변수로 정의해야 합니다. 함수에서 사용하는 전역변수는 함수 정의 전에 있는 것이 인지 순서상 더 편하지만, 코드의 가독성을 위해 기존 전역변수가 있는 곳 아래에 작성하겠습니다. 함수에서 사용하는 전역변수는 해당 함수 호출 전에만 정의되면 됩니다. 네 변수 모두 초깃값으로 빈 값을 넣어 줍니다.

tkinter에서 버튼의 이벤트로 연결되는 함수는 인자를 넣어서 전달할 수 없습니다. 예를 들어 command=dong_search('합정동')이 아닌 command=dong_search로 작성해야 합니다. 그래서 기존 dong_search() 함수를 dong_search1(), dong_search2()로 나누고 매개변수 없이 정의합니다. 각각 핫플레이스가 있는 행정동코드와 비교할 행정동의 코드를 찾는 함수입니다.

행정동명을 엔트리 입력에서 읽어와야 하므로 dong_ent1.get(), dong_ent2.get()으로 읽어와서 전역변수 dong_name1dong_name2에 값을 저장합니다. 이때 함수에서 전역변수의 값을 변경하므로 global로 선언합니다. 그리고 이 값을 code_datarow[-1]과 비교합니다. 기존 코드에서 함수 dong_search()dong_code를 반환하는 부분이 있었지만, 여기서는 전역변수 dong_code1, dong_code2에 저장되므로 return으로 값을 반환하는 부분은 삭제해도 됩니다. 그리고 행정동명이 행정동코드로 제대로 변환됐다는 것을 사용자가 알 수 있게 set() 함수로 info 레이블에 값을 보여 줍니다.

TIP 사실 lambda라는 익명함수를 사용하면 버튼 이벤트 연결에서도 인자를 전달할 수 있지만, 이 책에서는 다루지 않았기 때문에 전역변수를 활용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.