使用Tkinter插入文本框

时间:2014-12-09 00:46:21

标签: python tkinter

我尝试使用Tkinter将文本插入文本框。我试图插入从文件中检索到的信息,但我已将其归结为更简单的问题,这些问题表现出同样的问题:

class Main(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent
        self.init_ui()

    def helloCallBack(self):
        self.txt.insert("lol")

    def init_ui(self):    
        self.txt = Text(root, width=24, height = 10).grid(column=0, row = 0)

        load_button = Button(root, text="Load Wave Data", command = self.helloCallBack).grid(column=1, row = 0, sticky="E")

def main():
    ex = Main(root)
    root.geometry("300x250+300+300")
    root.mainloop()

我想要它做的是每当我按下按钮时它会在文本框中插入lol但我收到错误

AttributeError: 'NoneType' object has no attribute 'insert'

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

要插入,您需要指明要开始插入文本的位置:

self.txt.insert(0, "lol")

答案 1 :(得分:2)

  1. 您需要在分隔的行中调用grid。因为该方法返回None;导致self.txt引用None而不是Text小部件对象。

    def init_ui(self):
        self.txt = Text(root, width=24, height=10)
        self.txt.grid(column=0, row=0)
    
        load_button = Button(root, text="Load Wave Data", command=self.helloCallBack)
        load_button.grid(column=1, row=0, sticky="E")
    
  2. 您需要指定插入文本的位置。

    def helloCallBack(self):
        self.txt.insert(END, "lol")