redirigir stdout al widget de texto tkinter

Estoy tratando de redirigir el stdout de una función a un widget de texto tkinter. El problema con el que me encuentro es que escribe cada línea en una nueva ventana en lugar de enumerar todo en una. La función escanea un directorio y enumera cualquier archivo que sea 0k. Si no hay archivos de 0k, imprime eso. Entonces, el problema es que si hay 30 0k archivos en un directorio, se abrirán 30 ventanas con una sola línea en cada uno. Ahora, sé cuál es el problema. Si miras en mi código de funciónZerok() Lo estoy diciendo:

if os.stat(filename).st_size==0:  
       redirector(filename)

Sé que cada vez que os.stat ve un archivo que es 0k, lo envía al redirector, por eso es una nueva ventana para cada archivo. Simplemente no tengo idea de cómo solucionarlo. Código completo a continuación. Gracias por la ayuda.

import Tkinter
from Tkinter import *
import tkFileDialog

class IORedirector(object):
    '''A general class for redirecting I/O to this Text widget.'''
    def __init__(self,text_area):
        self.text_area = text_area

class StdoutRedirector(IORedirector):
    '''A class for redirecting stdout to this Text widget.'''
    def write(self,str):
        self.text_area.write(str,False)

def redirector(inputStr):
    import sys
    root = Tk()
    sys.stdout = StdoutRedirector(root)
    T = Text(root)
    T.pack()
    T.insert(END, inputStr)

####This Function checks a User defined directory for 0k files
def Zerok():
    import os
    sys.stdout.write = redirector #whenever sys.stdout.write is called, redirector is called.
    PATH = tkFileDialog.askdirectory(initialdir="/",title='Please select a directory')  
    for root,dirs,files in os.walk(PATH):  
     for name in files:  
      filename=os.path.join(root,name)  
      if os.stat(filename).st_size==0:  
       redirector(filename)
      else:
          redirector("There are no empty files in that Directory")
          break

#############################Main GUI Window###########################
win = Tk()
f = Frame(win)
b1 = Button(f,text="List Size")
b2 = Button(f,text="ZeroK")
b3 = Button(f,text="Rename")
b4 = Button(f,text="ListGen")
b5 = Button(f,text="ListDir")
b1.pack()
b2.pack()
b3.pack()
b4.pack()
b5.pack()
l = Label(win, text="Select an Option")
l.pack()
f.pack()
b2.configure(command=Zerok)
win.mainloop()

Respuestas a la pregunta(2)

Su respuesta a la pregunta