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()
解决了,谢谢!
我正在开发一个 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()
解决了,谢谢!