我正在为一个使用Qt的应用程序开发一个交互式pythonshell。然而,我似乎无法获得交互帮助来重定向。我在python代码中有这样的代码:
class OutputCatcher:
def __init__(self):
self.data = ''
def write(self, stuff):
self.data += stuff
sys.stdout = OutputCatcher()
但是,当我运行help()时,它不会重定向交互式帮助,它只是将其转储到控制台,在那里我运行python脚本。如果我在控制台中按ctrl+c,它就会把它发送到我的OutputCatcher对象。在
我确实尝试过谷歌,但什么也找不到。在
Help不仅转储到stdout,还与终端交互。它也永远不会在shell之外使用,所以它不会被编写来保证这些东西能够正常工作。在
您所要做的是实现一个终端,这是一项非常重要的任务,但是可能存在Qt的现有终端仿真库。甚至可能是用Python编写的,当然还有绑定。在
不需要猜测帮助在做什么,只需阅读源代码。在
help
内置项是在中创建的站点.py,它是_Helper
类的一个实例。调用时,它只需将调用委托给pydoc.help(...)
您将在中找到的源pydoc.py. 在在pydoc.help是
pydoc.Helper
的一个实例,其输入/输出设置为sys.stdin
,sys.stdout
,但是(我怀疑这是您遇到问题的地方)它在导入pydoc时使用stdin/stdout的值,因此以后重新绑定它们不会有任何效果。在我建议您用自己的帮助器类替换内置的help实例,该类显式地用所需的任何文件创建一个新的pydoc帮助器。在
相关问题 更多 >
编程相关推荐