On 12/21/2012 10:52 AM, Kevin Walzer wrote:
Yesterday I posted a question about keeping a Tkinter GUI during a
long-running process, i.e. reading data from a pipe via the subprocess
module. I think that question did not quite get at the heart of the
issue because it assumed that Python, like Tcl which underlies Tkinter,
supports non-blocking, asynchronous reading out of the box. Apparently
it does not.
There is currently the asyncore module, but I don't know that anyone
really likes it.
So, my question is hereby revised as such: how can I implement a
non-blocking read of a subprocess pipe that can write data to the
Tkinter text widget in an manner that does not cause the GUI to lock up?
Interesting question. Guido is currently, with help from many others
with async experience, working on a replacement for asyncore.
PEP 3156 - Asynchronous IO Support Rebooted
http://python.org/dev/peps/pep-3156/
You can read the pep if you want, but it includes a generalized event
loop interface. The prototype (partial) implementation includes (or
will) a default event loop. However, the intention is that it can be
replaced by (or maybe work with) adapters for existing event loops,
including that of gui frameworks. Being able write a tk loop adapter and
easily add io events and handlers to work along side with tk key and
mouse events and write to a widjet should be an interesting test of the
new framework.
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list