diff -r af602a891892 Lib/idlelib/filelist.py --- a/Lib/idlelib/filelist.py Sat Jul 16 18:27:11 2016 -0400 +++ b/Lib/idlelib/filelist.py Fri Jul 22 04:16:01 2016 -0400 @@ -65,7 +65,10 @@ del self.dict[key] del self.inversedict[edit] if not self.inversedict: - self.root.quit() + #self.root.quit() + # import here to avoid circular import problem + from idlelib.pyshell import loop + loop.stop() def filename_changed_edit(self, edit): edit.saved_change_hook() diff -r af602a891892 Lib/idlelib/pyshell.py --- a/Lib/idlelib/pyshell.py Sat Jul 16 18:27:11 2016 -0400 +++ b/Lib/idlelib/pyshell.py Fri Jul 22 04:16:01 2016 -0400 @@ -15,6 +15,9 @@ parent=root) sys.exit(1) +import asyncio +loop = asyncio.get_event_loop() + import getopt import os import os.path @@ -1524,9 +1527,17 @@ if tkversionwarning: shell.interp.runcommand("print('%s')" % tkversionwarning) + # #Experiment with running IDLE with asyncio loop + def tk_update(): + root.update() + loop.call_later(.01, tk_update) + while flist.inversedict: # keep IDLE running while files are open. - root.mainloop() + tk_update() + loop.run_forever() + #root.mainloop() root.destroy() + loop.close() capture_warnings(False) if __name__ == "__main__":