【发布时间】:2012-01-07 19:41:47
【问题描述】:
在以下情况下,我尝试将 temp2 脚本(通过子进程运行)的所有输出实时打印到文本框小部件。
我面临的问题是,在 temp2 中,i <= 468 的脚本运行良好,对我来说它似乎是实时的。
但是,如果我输入i = 469 或更高版本,执行会在多次迭代后停止。
例如,对于i = 469,日志文件包含i = 469 到i = 3 的条目。在整个过程停止之后。
请注意:值i = 469 可能与您的机器不同。如果i = 469 适合您,请尝试更高的值。
Temp1.py 是主脚本。
#temp1.py
from Tkinter import *
import Tkinter as tk
import os
import ttk
os.system('echo OS ready')
os.system('chmod 755 *')
import subprocess
import sys
#Creating new Window to display output
t = Tk()
t.title('output Run Display')
t.geometry('800x1000-5+40')
t.state('normal')
little = Label(t, text="NRUNTEST OUTPUT LOG").grid(column = 0, row = 0)
log = Text(t, state='disabled', width=115, height=150, wrap='none')
log.grid(row = 1, column = 0)
test=subprocess.Popen('temp2',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
#stdout
while True:
line_out = test.stdout.readline()
line_er = test.stderr.readline()
if line_out == "" and line_er == "":
break
else:
log['state'] = 'normal'
log.insert('end', line_out)
log.insert('end', line_er)
log['state'] = 'disabled'
print line_out
print line_er
t.update()
t.mainloop()
下面是我在子进程中运行的脚本。
#temp2 #csh script
set i = 469
while ($i > 0)
echo i is $i | tee -a log
set i = `expr "$i" - 1`
end
【问题讨论】:
-
else:行是否正确缩进?下面的行似乎也无效...... -
在我的解释器中没问题,这里纠正了一些由于从 unix 复制粘贴到窗口机器而导致的缩进错误
标签: python loops textbox tkinter subprocess