[IPython-user] Closing an embedded IPython Shell.

Brian Granger ellisonbg.net@gmail....
Wed Jul 29 12:23:35 CDT 2009


Whew, this is much more complicated then.  A few comments:

* Is your GUI running in the main thread?  Most GUI toolkits I know of get
very grumpy if they are not run in the main thread.  This alone could cause
problems.

* Are you uses IPython's threaded shells to integrate ipython with the GUI?
If not, can you better describe how the two are integrated.

* Sometime very soon (like next week) we will be merging some new code into
the ipython trunk that will have a much better way of doing GUI integration
(it doesn't require threads).  While I haven't tested it with embedding, it
should make these things much simpler.  Note:  this new stuff won't be in
the upcoming 0.10 release.

Cheers,

Brian

On Wed, Jul 29, 2009 at 10:16 AM, Dennis Muhlestein
<djmuhlestein@gmail.com>wrote:

> I have a GUI open in  a dedicated thread.  IPython is running in the shell.
>  When I close the GUI, I want IPython to close.  I call ipshell.magic_Exit()
> from the GUI thread when the GUI thread exits.  This terminates the shell
> but the shell doesn't go back to the terminal prompt until I hit Enter.
>  (It's not waiting for the confirm exit, it's stuck on waiting for stdin.)
>
> -Dennis
>
>
> On Jul 29, 2009, at 11:01 AM, Brian Granger wrote:
>
>  Dennis,
>>
>> Hmm, I am puzzled.  If I save the code below to a file (embedexit.py) and
>> then do:
>>
>> python embedexit.py
>>
>> I get an IPython prompt and can use it interactively.  I can then close it
>> by doing:
>>
>> In [3]: Exit
>>
>> or
>>
>> In [3]: exit()
>>
>> And the shell closes immediately.  I want to understand what you are doing
>> different.  Could you clarify?
>>
>> Cheers,
>>
>> Brian
>>
>> On Tue, Jul 28, 2009 at 2:53 PM, Dennis Muhlestein <
>> djmuhlestein@gmail.com> wrote:
>>
>> On Jul 27, 2009, at 10:42 AM, Brian Granger wrote:
>>
>> I think you have 2 options:
>>
>> 1.  Modify confirm_exit in ipythonrc to be 0 (default is 1).
>>
>> 2.  Create your embedded ipython like this to override the setting without
>> changing your config file
>>
>> from IPython.Shell import IPShellEmbed
>> from IPython.ipstruct import Struct
>> myconfig = Struct()
>> myconfig.confirm_exit=0
>> ipshell=IPShellEmbed(rc_override=myconfig)
>> ipshell()
>>
>>
>> Its a no-go.  The shell doesn't pop up the confirm exit anyway because the
>> magic_Exit() function I'm using doesn't call that.  The issue is that the
>> shell is hung waiting for some input from stdin.  It doesn't drop back to a
>> terminal unless I hit enter.
>>
>> -Dennis
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/ipython-user/attachments/20090729/277f05cc/attachment.html 


More information about the IPython-user mailing list