Name
after_idle
Synopsis
w
.after_idle(callable
,*args
)
Registers a callback to
callable
(*
args
)
to be performed when the event loop is idle (i.e., when all pending
events have been processed).
The following example shows how to use after
to
implement a simple digital clock:
import Tkinter import time curtime = '' clock = Tkinter.Label( ) clock.pack( ) def tick( ): global curtime newtime = time.strftime('%H:%M:%S') if newtime != curtime: curtime = newtime clock.config(text=curtime) clock.after(200, tick) tick( ) clock.mainloop( )
The kind of polling that method after
lets you
establish is an important Tkinter
technique.
Several Tkinter
widgets have no callbacks to let
you know about user actions on them, so if you want to track such
actions in real-time, polling may be your only option. For example,
here’s how to use polling established with
after
to track a Listbox
selection in real time:
import Tkinter F1 = Tkinter.Frame( ) s = Tkinter.Scrollbar(F1) L = Tkinter.Listbox(F1) s.pack(side=Tkinter.RIGHT, fill=Tkinter.Y) L.pack(side=Tkinter.LEFT, fill=Tkinter.Y) s['command'] = L.yview L['yscrollcommand'] = s.set for i in range(30): L.insert(Tkinter.END, str(i)) F1.pack(side=Tkinter.TOP) 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) poll( ) Tkinter.mainloop( )
Get Python in a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.