我正在尝试在我的应用程序中有一个输出框架。当我运行它时,我在NoneType object has no attribute insert
上收到错误:self.widget.insert('end', string)
。任何帮助,将不胜感激。
import Tkinter as tk
import sys
class Test(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
toolbar = tk.Frame(self).grid()
tk.Button(self, text="print to stdout", command=self.print_stdout).grid()
self.text= tk.Text(self).grid()
sys.stdout= Output(self.text)
def print_stdout(self):
print "Hello"
print "This is test"
class Output(object):
def __init__(self, widget):
self.widget = widget
def write(self,string):
self.widget.insert('end', string)
app = Test()
app.mainloop()
答案 0 :(得分:1)
您的问题出现在这一行:
self.text= tk.Text(self).grid()
grid
并未明确return
任何内容,因此这有效地设置了self.text = None
。然后将此值传递给Output.__init__
,最终在write
中访问。
将其拆分为两个步骤:
self.text = tk.Text(self)
self.text.grid()