【发布时间】:2011-07-10 02:28:03
【问题描述】:
我正在同时学习 python 和 wxPython... :) 所以,我有一组可以从命令行正常运行的 python 文件:./scan -d test ~/Pictures -- 例如将创建一个包含我的图片的数据库称为“测试”。
我一直在为此努力开发前端(我没有编写原始的命令行 python 文件),我可以通过以下方式运行它:
def bt_ScanUpdateClick(self, event):
self.SetSizeWH(450,360)
## DEBUG
self.tc_MainDatabase.Value = "test.db"
if self.tc_MainDatabase.Value == "":
self.LogWindow.Value += "ERROR:\tNo database name selected!\n"
else:
scanCMD = "./scan -d " + self.tc_MainDatabase.Value + " "
numLines=0
maxLines=(int(self.multiText.GetNumberOfLines()))
if self.multiText.GetLineText(numLines) == "":
self.LogWindow.Value += "ERROR\tNo folder selected to scan!\n"
else:
self.LogWindow.Value += "Running Scan...\n\n"
while (numLines < maxLines):
scanCMD += str(self.multiText.GetLineText(numLines)) + " "
numLines += 1
self.LogWindow.Value += scanCMD
p = subprocess.Popen([scanCMD],shell=True,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
self.LogWindow.Value += p.communicate()[0]
这给我带来了一个问题:
- 单击按钮激活后 这个,它实际上甚至没有得到 到 self.SetSizeWH(450,360) 部分 的功能。它只是停留在一个 “下”状态。什么时候 命令完成,应用程序来了 与生活中的一切一起恢复生机 输出窗口(self.LogView)已经......我会 喜欢以更多的方式获得输出 “实时”方式……可能吗?
有什么想法吗?
【问题讨论】:
-
在上面 Bryan 的回答和这个链接之间:[wxpython:实时捕获子进程的输出][1]...我得到了这个工作! [1]:stackoverflow.com/questions/6677248/…
标签: wxpython subprocess textctrl