【问题标题】:NoneType Error self.widget.insertNoneType 错误 self.widget.insert
【发布时间】:2014-05-13 07:40:58
【问题描述】:

我正在尝试在我的应用程序中添加一个输出帧。当我运行它时,我收到错误:self.widget.insert('end', string) 上的NoneType object has no attribute insert。任何帮助,将不胜感激。

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()

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    你的问题出现在这一行:

    self.text= tk.Text(self).grid()
    

    grid 没有明确地return 任何东西,所以这实际上是设置self.text = None。然后将该值传递给Output.__init__ 并最终在write 中访问。

    改为分为两步:

     self.text = tk.Text(self)
     self.text.grid()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-19
      • 2022-01-22
      • 2018-10-29
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多