Use the
aftermethod. From a discussion here.
import Tkinter as tki, time
class App(object):
def __init__(self):
self.root = tki.Tk()
self.win = tki.Text(self.root, undo=True, width=20, height=5)
self.win.pack(side='top', expand=True, fill='both')
self.poll()
def poll(self):
print time.strftime('%H:%M:%S')
self.win.insert(tki.END, time.strftime('%H:%M:%S') + '\n')
self.root.after(1000, self.poll)
app = App()
app.root.mainloop()
From a further discussion here, use the after_cancel
method to cancel the polling. after
returns a job id that you need for the cancellation
import Tkinter as tki, time
class App(object):
def __init__(self):
self.root = tki.Tk()
self.win = tki.Text(self.root, undo=True, width=10, height=1)
self.win.pack(side='left')
self.cancel = tki.Button(self.root,text='Stop',command=self.stop)
self.cancel.pack(side='left')
self._poll_job_id = self.poll()
def poll(self):
print time.strftime('%H:%M:%S')
self.win.delete(1.0,tki.END)
self.win.insert(tki.END, time.strftime('%H:%M:%S') + '\n')
self._poll_job_id = self.root.after(1000, self.poll)
def stop(self):
self.root.after_cancel(self._poll_job_id)
self.cancel.configure(text='Go',command=self.go)
def go(self):
self.cancel.configure(text='Stop',command=self.stop)
self._poll_job_id = self.poll()
app = App()
app.root.mainloop()
Comments
Post a Comment