在Python程序中嵌入Python shell

2024-10-01 13:28:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python制作一个科学实验室,用户可以在其中创建、修改和分析各种对象。我想在程序中放一个pythonshell,这样用户就可以通过shell操作对象了。(注意:他还可以通过通常的GUI操作对象。)

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

我怎么能做这种事?在

我考虑过使用eval,但我明白eval不能处理import。在


Tags: 对象用户模型程序comhttpevalrr
3条回答

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

  • 对于wxpython,查找“pycrast”—它很容易嵌入到你的应用程序中
  • 对于PyQt,pyqtshell2011年4月29日更新:这些天称为spyder

下面是我在应用程序中嵌入pycrast的方法:

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

crustFrame = wx.py.crust.CrustFrame(parent = self)
crustFrame.Show()

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

FWIW,我相信enhough已经编写了类似这样的东西,用于他们基于Python的(和基于NumPy的)可视化套件。两年前,我看到了一个演示,其中确实允许您通过GUI或Python解释器直接操作对象。在

此外,要添加到第一个答案,您可能需要子类code.InteractiveConsole重写自我阅读()和自写(),因此它们与GUI交互。你还得重新定向系统标准输出以及系统标准写入同一控制台的某个可写类。在

你在找code - Interpreter base classes,尤其是代码.交互(). 在

一些examples from effbot。在

相关问题 更多 >