Skip to main content
 首页 » 编程设计

python之运行命令行程序的 wxpython GUI

2024年08月28日26emanlee

我已经搜索了一个小时,但找不到这个问题的明确答案。

我正在尝试编写一个 wxPython GUI 应用程序,它有一个启动命令行工具的按钮(全部在 Windows 上)。该工具大约需要 5 分钟才能运行,并在运行过程中生成输出。

我希望 GUI 有某种文本窗口显示输出。我还想终止 GUI 以终止命令行进程。

我查看了线程和 Popen,但似乎无法找出它们之间的正确连接来完成这项工作。谁能给我指出一个合理的例子?

请您参考如下方法:

我写了一篇文章,其中我按照您所说的思路做了一些事情。我需要运行 ping 和 traceroute 并实时捕获它们的输出。这是文章:http://www.blog.pythonlibrary.org/2010/06/05/python-running-ping-traceroute-and-more/

基本上您需要将标准输出重定向到文本控件,然后执行如下操作:

proc = subprocess.Popen("ping %s" % ip, shell=True,  
                            stdout=subprocess.PIPE)  
line = proc.stdout.readline() 
print line.strip() 

如您所见,我使用子进程启动 ping 并读取其标准输出。然后,在打印出来之前,我使用 strip() 命令从该行的开头和结尾删除多余的空格。当您进行打印时,它会被重定向到文本控件。