在Python程序中嵌入Python shell

Ram*_*hum 11 python shell

我正在使用Python构建一个科学实验室,用户可以在其中创建,修改和分析各种对象.我想在程序中放置一个Python shell,因此用户可以通过shell操作对象.(注意:他也可以通过常用的GUI操作对象.)

一个模型说明了这一点:http: //cool-rr.com/physicsthing/physicsthing_mockup_thumb.gif

我怎么能做这种事呢?

我考虑过使用eval,但我明白eval无法处理import,例如.

Van*_*ale 15

您正在寻找代码 - 解释器基类,尤其是code.interact().

来自effbot的一些例子.


Eli*_*sky 9

根据您的GUI框架,它可能已经完成:

  • 对于wxpython,查找"PyCrust" - 它很容易嵌入到你的应用程序中
  • 对于PyQt,pyqtshell (更新29.04.2011:这几天称为spyder)

以下是我将PyCrust嵌入到应用程序中的方法:

import wx.py.crust
...
...
# then call

crustFrame = wx.py.crust.CrustFrame(parent = self)
crustFrame.Show()
Run Code Online (Sandbox Code Playgroud)

self这里指的是我的主框架(衍生wx.Frame).这将创建一个在您的应用程序中运行的PyCrust窗口,并允许您检查存储在主框架中的所有内容(因为self).