Python pexpect - 将子标准输出重定向到 tkinter 文本小部件

Python pexpect - redirect child stdout to a tkinter text widget

我正在开发一个 python 脚本来调用和执行 csh 脚本。为此,我使用 pexpect.spawnu 调用脚本并在每次 csh 脚本请求时发送一​​个选项。

我的问题是我需要将 csh 脚本的 stdout 实时重定向到 tkinter 文本小部件,但此时信息仅在 child 关闭时写入文本小部件。

我已经尝试将所有 child.logfile 重定向到 stdout,将 stdout 重定向到文本小部件,但即便如此,信息也仅在子项关闭时写入。

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.logfile 将标准输出直接插入文本小部件,但我仍然不能。

谢谢。

[编辑]

解决办法见评论。

似乎文本小部件仅在 class 完成执行时才更新。 插入后我只需要更新文本小部件即可实时查看信息,如:

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()

解决了,谢谢!