2016-06-13 90 views
-1

我需要从Windows下的python脚本启动python控制台。 此控制台的输出必须写在文本框中。 我使用的子进程'的原因python控制台可以是python 2或3,取决于用户的选择,所以我不能使用code.InteractiveConsole。 现在,我用subprocess.Popen启动python,stdin = PIPE,stdout和stderr是两个文件子类,其写入方法在我的文本框中打印。Python:如何从Windows下的Python脚本启动一个不可见的Python控制台?

class output(file): 
    def __init__(self): 
    super(output,self).__init__("out","wb") 
    def write(self,data): 
    MyTextBox.Text = data 
out=output() 

一切都好。 p = Popen(“python -i”,stdin = PIPE,stdout = out,stderr = err) err是其他类,与输出相同,但是是其他文件。 好的,p是一个子进程,但stdout和stderr是None。 当然,我错了什么,但我不明白! 也许我必须使用4个变量? out_write和out_read用于stdout和err_write,err_read用于stderr? 帮助!

+0

代码的例子是相当不清楚,请您提供一个[MCVE](http://stackoverflow.com/help/mcve) ? –

+0

对不起,我没有公布所有资料,但我解答了答案。现在我可以从我的不可见的Python控制台抓取输出和错误。谢谢! –

回答

0

要隐藏命令提示窗口,通过适当的标志:

si = subprocess.STARTUPINFO() 
si.dwFlags |= subprocess.STARTF_USESHOWWINDOW 
#si.wShowWindow = subprocess.SW_HIDE 
subprocess.call('whoami', startupinfo=si) 
相关问题