"""Proof of concept: integrate tkinter, asyncio and async iterator. Terry Jan Reedy, 2016 July 25 """ import asyncio import tkinter as tk import datetime class App(tk.Tk): def __init__(self, loop, interval=.01): super().__init__() self.loop = loop self.protocol("WM_DELETE_WINDOW", self.close) self.tasks = [] self.create_widgets() self.updater(interval) def create_widgets(self): self.hello = tk.Label(self, text='Hello World', bg='white') self.dtime = tk.Label(self) self.hello.pack() self.dtime.pack() self.tasks.append(loop.create_task(self.clock(1))) self.tasks.append(loop.create_task( self.bg_flip(.337, self.hello, 'red'))) async def clock(self, interval): while True: self.dtime['text'] = datetime.datetime.now() await asyncio.sleep(interval) async def bg_flip(self, interval, widget, color): while True: await asyncio.sleep(interval) bg = widget['bg'] widget['bg'] = color if bg == 'white' else 'white' def updater(self, interval): self.update() self.loop.call_later(interval, self.updater, interval) def close(self): for task in self.tasks: task.cancel() self.loop.stop() self.destroy() loop = asyncio.get_event_loop() app = App(loop) loop.run_forever() loop.close()