<div class="gmail_quote">On Sat, Feb 7, 2009 at 11:00 AM, Brian Granger <span dir="ltr">&lt;<a href="http://ellisonbg.net">ellisonbg.net</a>@<a href="http://gmail.com">gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello all,<br>
<br>
I am trying to understand the current situation of how IPython<br>
integrates with GUI event loops. &nbsp;I am going to be doing some work on<br>
the core soon, so I want to make sure I understand all of the<br>
subtleties. &nbsp;From looking at things, here is my take:<br>
<br>
1. The IPython Core and any GUI event loop must be run in the same<br>
thread and that thread must be the main thread if IPython is to offer<br>
interactive GUI support.<br>
<br>
2. PyOS_InputHook allows a function to be registered that will be<br>
called periodically (by readline) while input is being entered at the<br>
command line. This opens the door for GUI event loops to continue<br>
running while a command line IPython is waiting for input. This is<br>
only relevant for terminal based IPython shells though. &nbsp;From what I<br>
can tell, only Tk and recent releases of GTK and Qt4 support this<br>
though.<br>
<br>
Does Wx support this?<br>
<br>
If not, can we implement this ourselves?<br>
<br>
I tried to use PyOS_InputHook this morning from ctypes, but it didn&#39;t<br>
work. &nbsp;Has anyone figured this out? Is PyOS_InputHook relevent for<br>
non-teminal based IPython frontends?<br>
<br>
In other words: can we get rid of the messy threading code in<br>
IPython?!!! (please say yes)<br>
<br>
3. SIgnals. &nbsp;I know that one of the most subtle aspect of IPython is<br>
getting signals working in the multithreaded shells. &nbsp;How does this<br>
change if we move to using PyOS_InputHook rather than our current GUI<br>
shells?<br>
<br>
4. There is an IPython commit by Darren Dale saying that the<br>
PyOS_InputHook approach wasn&#39;t working fully, so it was disabled. &nbsp;Did<br>
we get to the bottom of this?<font color="#888888"><br>
</font></blockquote></div><br>I think you are referring to a comment from 2008-02-07 in docs/attic/Changelog, is that right? IPython&#39;s Qt threading support is implemented the same way as the other gui toolkits, using IPython&#39;s infrastructure, which was conflicting with Qt&#39;s use of PyOS_InputHook. I dont remember all the details, there was some discussion on the ipython mailing list around the the time of that commit, it boiled down to starting ipython with -q4thread, and attempting to &quot;run qt4_foo.py&quot; which started the main loop by calling QApplication.exec_(), which blocked. Phil Thompson suggested the call to remove pyqt4&#39;s use of the input hook. I don&#39;t think we have ever tried relying solely on pyqt4&#39;s built in support for interactive interpreters.<br>
<br>Darren<br>