2016-03-07 55 views
0

我已经创建了一个在Linux终端中运行命令的GUI。在GUI中传递终端输出

实施例=> -n 20 -id 15 -domain平方(10,20)-dim 2 -o执行-format地理位置,苔丝

该命令是用于一个代码的执行对包。并且在Linux终端中执行一系列输出时。输出成功并且输出已生成,或者由于转储错误或参数错误而发生错误。终端输出的

实例:

错误:matheval未能处理的表达。表达式 语法可能不正确。这也可能是由于数据安装不正确(表达式= 1-fiber(,,))造成的。中止(核 倾倒)

另一个错误

错误:错误的参数! 中止(核心转储)

什么,我试图做的是返回此错误回到GUI无论是作为MessageBox的和/或更新与错误的GUI的底部状态栏。

我对wx和subprocess模块​​并不熟悉,但我迄今为止的研究未能找到解决方案。

我正在运行Python 2.7并使用Tkinter。

+0

如果你的问题是与Tk,[这可能有帮助](http://stackoverflow.com/questions/17280637/tkinter-messagebox-without-window)。 –

+0

如果你的问题是捕获你的“​​Linux Terminal”命令的'stderr',你可能需要'subprocess.Popen()'和'stderr = subprocess.PIPE'。例如,尝试:'p = subprocess.Popen('/ bin/cat /bad_path'.split(),stderr = subprocess.PIPE)''后面跟'sout,serr = p.communicate()'。 –

+0

@BrianMcFarland谢谢你。我知道我需要传递我在Popen中使用的命令 > p = subprocess.Popen(['neper','-T','-format',output_form,'-n',n,'-id ',id,'-dim',dim,reg],stdout = subprocess.PIPE) 因为这似乎会在终端中创建一个错误,但命令语法是正确的。 –

回答

0

这似乎完成了工作。

 # Create a string and pass variables 
     neper_exec = "neper -T -n %s -id %s -format %s -o %s -dim %s -domain %s " % (n, id, output_form, o, dim, domain) 
     # Execute the subporcess using the variable 
     p = subprocess.Popen(neper_exec, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # when shell is dropped Linux gives and error 

感谢@BrianMcFarland获取有关子流程命令的指导。