Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter에서 무한 루프를 구현하는 방법

Tkinter에서 무한 루프를 실행하려면 after() 메서드를 활용하여 지정한 시간 간격마다 특정 메서드를 재귀적으로 호출하고, 사용자가 루프를 중지하기로 결정할 때까지 반복하면 됩니다. 아래의 간단한 예제를 통해 무한 루프를 시작하고 중지하는 방법을 단계별로 살펴보겠습니다.

구현 단계

  • 필요한 라이브러리를 임포트하고 tkinter 프레임의 인스턴스를 생성합니다.

  • win.geometry() 메서드를 사용하여 프레임(윈도우)의 크기를 설정합니다.

  • 자기 자신을 재귀적으로 호출하면서 윈도우에 문장을 출력하는 사용자 정의 함수 "infinite_loop"를 작성합니다.

  • 무한 루프를 제어하기 위해 start()와 stop() 함수를 추가로 정의합니다. 전역 변수 "condition"을 선언하고, start() 안에서는 condition=True로, stop() 안에서는 condition=False로 설정합니다.

  • start()와 stop() 함수를 각각 호출하는 두 개의 버튼을 생성합니다.

  • after() 메서드를 사용하여 1초마다 infinite_loop 함수를 재귀적으로 호출합니다.

  • 마지막으로 애플리케이션 창의 mainloop를 실행합니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *

# tkinter 프레임 인스턴스 생성
win = Tk()

# Tkinter 창 크기 설정
win.geometry("700x350")

# 무한 루프 안에서 텍스트를 출력하는 함수 정의
condition = True

def infinite_loop():
   if condition:
      Label(win, text="Infinite Loop!", font="Arial, 25").pack()

   # 1초 후 infinite_loop()를 다시 호출
   win.after(1000, infinite_loop)

def start():
   global condition
   condition = True

def stop():
   global condition
   condition = False

# 무한 루프를 시작하는 버튼 생성
start_btn = Button(win, text="Start the Loop", font="Arial, 12", command=start).pack()
stop_btn = Button(win, text="Stop the Loop", font="Arial, 12", command=stop).pack()

# 1초 후 infinite_loop 함수 최초 호출
win.after(1000, infinite_loop)

win.mainloop()

실행 결과

위 코드를 실행하면 다음과 같은 화면이 나타납니다.

Tkinter에서 무한 루프를 구현하는 방법

Start the Loop 버튼을 클릭하면 무한 루프가 시작되어 매 초마다 "Infinite Loop!"라는 텍스트가 창에 계속 출력됩니다. 반대로 Stop the Loop 버튼을 클릭하면 condition 변수가 False로 변경되어 더 이상 새로운 텍스트가 출력되지 않으며, 무한 루프가 중지됩니다.

참고 사항

여기서 핵심은 time.sleep() 같은 블로킹 방식 대신 Tkinter의 after() 메서드를 사용한다는 점입니다. after()는 메인 이벤트 루프를 차단하지 않으면서 일정 시간 후 콜백 함수를 실행해 주기 때문에, GUI가 멈추지 않고 정상적으로 반응하며 무한 루프를 구현할 수 있습니다.