[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