Take a look at the source code of the code module (file code.py in the lib directory). The push() method of the InteractiveConsole class shows how to handle multi-line statements.
Basically, keep collecting lines as long as the result returned by the runsource() call is true. Maybe instead of calling the runsource() method, just call the push() method. /Jean Brouwers In article <[EMAIL PROTECTED]>, <"[EMAIL PROTECTED]"> wrote: > I'm trying to embed a Python interpreter in a GUI I'm developing, and > I'm having trouble understanding the proper use of > code.InteractiveInterpreter. > > Here's what I'm trying: > > % python > Python 2.3 (#1, Sep 13 2003, 00:49:11) > [GCC 3.3 20030304 (Apple Computer, Inc. build 1495)] on darwin > Type "help", "copyright", "credits" or "license" for more information. > >>> from code import InteractiveInterpreter > >>> a = InteractiveInterpreter() > >>> a.runsource('a = 0') > False > >>> a.runsource('b = 0') > False > >>> a.runsource('print a,b') > 0 0 > False > >>> a.runsource('def q():') > True > >>> a.runsource(' print "hi"') > File "<input>", line 1 > print "hi" > ^ > SyntaxError: invalid syntax > False > > > What's the proper way to call the interpreter instance for a multiline > example like this? > > Thanks in advance, > > Rick > -- http://mail.python.org/mailman/listinfo/python-list