[Tkinter] after() 함수 사용법

2020년 09월 17일 by 진아사랑해

    [Tkinter] after() 함수 사용법 목차
반응형

일정한 시간이 지난 후에 특정 함수 또는 메쏘드를 실행시키는 경우에 사용한다.

사용법은

after( 지연시간, 실행할 함수명, 함수에 넘길 인자1, 인자 2,...)

지연 시간은 ms 단위이다.

 

after_idle(change_img) => event-loop에 대기하는 다른 일이 없을 때, 바로 실행된다.

 

예 1)

class StartPage(tk.Frame):

    ....

    ....

   after(1000, change_img) => 1000ms 즉, 1초 후에 change_img가 실행된다.

   .....

 

   def change_img(self):

       ....

       after(1000, change_img) => 1000ms 즉, 1초 후에 change_img가 실행된다.

 

예 2)

class StartPage(tk.Frame):

    ....

    ....

    after(500, change_img, master) => 500ms 즉, 0.5초 후에 change_img가 실행되며, 

                                                   change_img()에 master가 인수로 전달된다.

   .....

 

   def change_img(self, master):

       ....

       after(500, change_img, master) 

 

기존에 설정된 after( )를 취소하는 방법은

self.new_screen_after = self.after(300self.write_new_point_screen)  <- after의 id를 만들다

self.after_cancel(self.new_screen_after)  <- after_cancel( after id)로 작성한다

참고) 여러 Tkinter 위젯에는 사용자 작업에 대해 알려주는 콜백이 없으므로 이러한 작업을 실시간으로 추적하려면 폴링이 유일한 옵션 일 수 있습니다. 예를 들어 다음은 after로 설정된 폴링을 사용하여 실시간으로 Listbox 선택을 추적하는 방법입니다.

 

F2 = Tkinter.Frame( )

lab = Tkinter.Label(F2)

def poll( ):

   lab.after(200, poll)

    sel = L.curselection( )

    lab.config(text=str(sel))

lab.pack( )

F2.pack(side=Tkinter.TOP)

 

 

 

 

반응형