我正在开发一个调用并执行csh脚本的python脚本。为此,我使用了pexpect.spawnu,该脚本调用脚本并在csh脚本每次请求时发送一个选项。
我的问题是我需要实时将csh脚本的stdout重定向到tkinter文本小部件,但目前仅在关闭子级时将信息写入文本小部件。
我已经尝试过将所有child.log文件重定向到stdout,并将stdout重定向到文本小部件,但是即使如此,信息也仅在child关闭时才写入。
child = pexpect.spawnu('script_name'+ param1 + ' '+ param2, timeout=None)
child.logfile = sys.stdout
for line in child:
self.text1.insert(tk.INSERT, line) # this will be inserted only when child is closed
if 'option' in line:
child.sendline(opt1)
child.close()
我正在尝试将child.log文件放入stdout,直接将其插入文本小部件中,但是我仍然不能。
谢谢。
[编辑]
请参阅评论中的解决方案。
答案 0 :(得分:0)
似乎仅在类完成执行时才更新文本小部件。 插入后,我只需要更新文本小部件即可实时查看信息,例如:
child = pexpect.spawnu('script_name'+ param1 + ' '+ param2, timeout=None)
child.logfile = sys.stdout
for line in child:
self.text1.insert(tk.INSERT, line)
self.text1.update() # update the information in the text widget
if 'option' in line:
child.sendline(opt1)
child.close()
解决了,谢谢!