在以下情况下,我试图将temp2脚本(通过子进程运行)的所有输出实时打印到文本框小部件上。Python/Tkinter:循环迭代没有完成
我面临的问题是这个,在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:”行?此外,下面的行似乎无效... – eumiro
在我的翻译器里没问题,在这里纠正了由于从unix复制粘贴到窗口机器造成的一些缩进错误 – Ani