gpt4 book ai didi

python - 将命令提示符输出重定向到 python 生成的窗口

转载 作者:太空宇宙 更新时间:2023-11-04 09:10:49 25 4
gpt4 key购买 nike

开发了一个使用 msbuild 构建项目的脚本。我有使用 wxpython 开发的 GUI,它有一个按钮,当用户单击该按钮时,将使用 msbuild 构建一个项目。现在,我想在用户单击该按钮时打开一个状态窗口,并显示命令提示符中显示的所有输出,并且不应显示命令提示符,即将命令提示符输出重定向到用户 GUI 状态窗口。我的构建脚本是,

def build(self,projpath)
arg1 = '/t:Rebuild'
arg2 = '/p:Configuration=Release'
arg3 = '/p:Platform=x86'
p = subprocess.call([self.msbuild,projpath,arg1,arg2,arg3])
if p==1:
return False
return True

最佳答案

实际上几年前我在我的博客上写过这个,我创建了一个脚本来将 ping 和 traceroute 重定向到我的 wxPython 应用程序:http://www.blog.pythonlibrary.org/2010/06/05/python-running-ping-traceroute-and-more/

基本上,您创建一个简单的类来将 stdout 重定向到并将其传递给 TextCtrl 的实例。它最终看起来像这样:

class RedirectText:
def __init__(self,aWxTextCtrl):
self.out=aWxTextCtrl

def write(self,string):
self.out.WriteText(string)

然后当我写我的 ping 命令时,我这样做了:

def pingIP(self, ip):
proc = subprocess.Popen("ping %s" % ip, shell=True,
stdout=subprocess.PIPE)
print
while True:
line = proc.stdout.readline()
wx.Yield()
if line.strip() == "":
pass
else:
print line.strip()
if not line: break
proc.wait()

要查看的主要内容是子进程调用中的 stdout 参数,wx.Yield() 也很重要。 Yield 允许将文本“打印”(即重定向)到标准输出。没有它,在命令完成之前文本不会显示。我希望一切都有意义。

关于python - 将命令提示符输出重定向到 python 生成的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15471007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com