在以下情況下,我試圖將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