我正在使用Python构建一个科学实验室,用户可以在其中创建,修改和分析各种对象.我想在程序中放置一个Python shell,因此用户可以通过shell操作对象.(注意:他也可以通过常用的GUI操作对象.)
一个模型说明了这一点:http: //cool-rr.com/physicsthing/physicsthing_mockup_thumb.gif
我怎么能做这种事呢?
我考虑过使用eval
,但我明白eval
无法处理import
,例如.
您正在寻找代码 - 解释器基类,尤其是code.interact().
来自effbot的一些例子.
根据您的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()
在self
这里指的是我的主框架(衍生wx.Frame
).这将创建一个在您的应用程序中运行的PyCrust窗口,并允许您检查存储在主框架中的所有内容(因为self
).