解决方法很简单:不要创建多个重定向器。重定向器的全部目的是创建一次,然后普通打印语句将显示在该窗口中。
您需要对功能进行一些小的更改
redirector。首先,它不应该调用
Tk;相反,它应该创建一个实例,
Toplevel因为tkinter程序必须恰好具有一个根窗口。其次,您必须将文本小部件传递到,
IORedirector因为它需要知道要写入的确切小部件。
def redirector(inputStr=""): import sys root = Toplevel() T = Text(root) sys.stdout = StdoutRedirector(T) T.pack() T.insert(END, inputStr)
接下来,只应一次调用此函数。从那时起,要使数据出现在窗口中,您将使用普通
您可以在主要的代码块中创建它:
win = Tk()...r = redirector()win.mainloop()
接下来,您需要修改
write函数,因为它必须写入文本小部件:
class StdoutRedirector(IORedirector): '''A class for redirecting stdout to this Text widget.''' def write(self,str): self.text_area.insert("end", str)
最后,将
Zerok函数更改为使用打印语句:
def Zerok():…如果os.stat(filename).st_size == 0:
print(filename)else:print(“该目录中没有空文件”)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)