[Idle-dev] PyShell Question

Dean N. Williams williams13 at llnl.gov
Tue Sep 16 09:12:31 EDT 2003

Dear IDLE Developers,

    I am calling IDLE directly from within my GUI application. In the 
past, (i.e., Python 2.2), I imported the idlelib and imported PyShell 
directly into my GUI application. This gave me greater control, which I 
need for my application.  To do this I had to call PyShellFileList to 
create a flist, then I put in a dummy place holders for flist to tell 
IDLE that my application was the parent (i.e.,Toplevel), so that when I 
close the IDLE window my entire application did not close along with IDLE.
    For example:

from idlelib import PyShell

root.flist = PyShell.PyShellFileList( root )
root.flist.dict['vcdat: place holder for idle'] = root
root.flist.inversedict[root] = 'vcdat: place holder for idle'
root.flist.pyshell = None

shell = PyShell.PyShell(parent.flist)
shell.shell_title = "VCDAT's Command Line Window"

Where root is my Tkinter.Tk()

    Now with the new IDLE this is slightly different. It appears that I 
need to set use_subprocess to false
(i.e., PyShell.use_subprocess = False). It also appears that I do not 
need to set the flist's dict or inverse.
I got everything to work as before, but I cannot get IDLE to think that 
my GUI is the parent.

The question is how do I tell IDLE that my GUI is the parent (i.e., 
TopLevel), so that when I close IDLE, it doesn't close my GUI too?

Thanks in advance for any help....

Best regards,

More information about the IDLE-dev mailing list