问题在于,当您调用时
app.mainloop(),线程正忙于执行Tkinter主循环,因此直到退出循环之前,该语句之前的语句都不会执行。但是一旦退出mainloop,您将尝试使用Text小部件,但该小部件已被销毁。
我建议您将调用移至
mainTkinter小部件的回调(我想您已经在尝试使用了
app.button_press()),因此Text对象可用于显示文本。
class CoreGUI(object): def __init__(self,parent): self.parent = parent self.InitUI() button = Button(self.parent, text="Start", command=self.main) button.grid(column=0, row=1, columnspan=2) def main(self): print('whatever') def InitUI(self): self.text_box = Text(self.parent, wrap='word', height = 11, width=50) self.text_box.grid(column=0, row=0, columnspan = 2, sticky='NSWE', padx=5, pady=5) sys.stdout = StdoutRedirector(self.text_box)root = Tk()gui = CoreGUI(root)root.mainloop()


