import Tkinter as tkinter import random import string import threading import time running = True class EventThread(threading.Thread): def __init__(self,target): super(EventThread,self).__init__() self.target = target def run(self): pass while running: time.sleep(0.02) self.target.event_generate(random.choice(string.ascii_letters)) class Main(object): def __init__(self): self.root = tkinter.Tk() self.root.bind('',dummy_handler) self.threads=[] def go(self): self.root.after(20,self.add_threads) self.root.after(5000,self.stop) self.root.mainloop() def stop(self): global running running = False for t in self.threads: t.join() self.root.destroy() def add_threads(self): for _ in range(2): t = EventThread(self.root) self.threads.append(t) t.start() def dummy_handler(event): pass if __name__ == '__main__': Main().go()