我已将 STDOUT 重定向到文本小部件。然后我使用线程来运行子进程,通过 poll() 捕获标准输出并打印它(重定向到文本小部件)。
现在我希望小部件随文本小部件自动滚动,以便用户始终可以看到最新的输出。
(文本小部件的唯一用途是显示运行脚本的输出,因此请随意提出替代方案)
class myGui:
def __init__(self, master=none)
self.text_Output = tk.Text(frame_Output)
self.text_Output.config(borderwidth='1', height='10', insertborderwidth='2', relief='ridge')
self.text_Output.config(width='50')
# redirect stdout
redir = RedirectText(self.text_Output)
sys.stdout = redir
def runCode:
self.p = subprocess.Popen(["COMMAND HERE"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=1, universal_newlines=True)
while self.p.poll() is None:
msg = self.p.stdout.readline().strip()
if msg:
print(msg)
class RedirectText(object):
def __init__(self, text_ctrl):
"""Constructor"""
self.output = text_ctrl
def write(self, string):
self.output.insert(tk.END, string)
Helenr
相关分类