Tkinter의 버튼(Button) 위젯은 애플리케이션 내에서 특정 동작 이벤트를 수행하는 데 사용됩니다. 보통은 사용자가 마우스로 버튼을 클릭해야 이벤트가 발생하지만, 실제 클릭 없이도 프로그래밍 방식으로 버튼의 동작을 실행할 수 있습니다. Tcl/Tk에서 제공하는 invoke() 메서드가 바로 그 역할을 합니다. 이 메서드는 버튼에 명령(command)이 지정되어 있는 경우 해당 결과를 문자열로 반환하며, 버튼 위젯이 초기화된 이후라면 언제든지 호출할 수 있습니다.
invoke() 메서드란?
invoke()는 버튼 위젯에 바인딩된 콜백 함수를 직접 실행하는 메서드입니다. 사용자가 버튼을 누른 것과 동일한 효과를 내기 때문에 다음과 같은 상황에서 특히 유용합니다.
- 애플리케이션이 시작될 때 특정 기능을 자동으로 실행해야 하는 경우
- 키보드 단축키와 버튼 동작을 연결하고 싶은 경우
- GUI 테스트 자동화 과정에서 버튼의 동작을 검증해야 하는 경우
버튼 위젯이 준비되는 즉시 invoke()를 호출하면, 별도의 사용자 입력 없이도 이벤트가 자동으로 발생합니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
# tkinter 프레임 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
def display_msg():
messagebox.showinfo("메시지", "안녕하세요! Tkinter 데모 애플리케이션에서 인사드립니다.")
# 버튼 위젯 추가
b1 = ttk.Button(win, text="클릭하세요", command=display_msg)
b1.pack(pady=30)
# 클릭 없이 버튼 동작 강제 실행
b1.invoke()
win.mainloop()
코드 설명
위 예제에서 핵심은 b1.invoke() 라인입니다. 버튼 b1이 생성되고 화면에 배치된 직후 invoke() 메서드를 호출함으로써, mainloop()가 시작되는 순간 display_msg 함수가 자동으로 실행됩니다. 만약 이 라인이 없다면 사용자가 직접 버튼을 클릭했을 때에만 메시지 박스가 나타납니다.
실행 결과
위 코드를 실행하면 프로그램 시작과 동시에 팝업 메시지 박스가 자동으로 나타납니다. 이후 메인 윈도우에서 버튼을 직접 클릭하면 같은 팝업이 다시 표시됩니다.

마무리
이처럼 Tkinter의 invoke() 메서드를 활용하면 사용자의 클릭 없이도 버튼에 연결된 기능을 손쉽게 실행할 수 있습니다. 자동 실행 기능, 단축키 처리, 테스트 자동화 등 다양한 시나리오에서 활용해 보시기 바랍니다.