Tkinter Text Widget不能使用get方法

时间:2018-08-02 23:42:45

标签: python tkinter

我在Tkinter遇到了一些麻烦。 我正在尝试编写一个表单,该表单获取文件名和用户想要在文本文件中写入的内容。代码如下所示:

from tkinter import *

root = Tk()
frame = Frame(root)
frame.pack()

bottomFrame = Frame(root)
bottomFrame.pack(side = BOTTOM)

def getInput():
    inputValue= textBox.get("1.0", "end-1c")
    print(inputValue)

fileName_ = StringVar()

textBox = Text(bottomFrame, height = 100, width = 100).pack(side = LEFT)

Label(frame, text = 'File name:').pack(side = LEFT)
Entry(frame, textvariable = fileName_).pack(side = LEFT)
buttonCommit = Button(frame, text = 'Write File', command = lambda: getInput())
buttonCommit.pack(side = LEFT)

root.mainloop()

当我运行它并显示该表单时,我在文本框中写了一些内容,然后单击按钮以在控制台中写入打印文本框的内容,然后在IPython控制台中出现以下消息:

  

Tkinter回调中的异常
  追溯(最近一次通话):
    调用中的文件“ C:\ ProgramData \ Anaconda3 \ lib \ tkinter__init __。py”,行1699       返回self.func(* args)
    
中的文件“ C:/ Users / Marcelo / Desktop / Web Develop / GUI编程Python / p13.py”,第20行       buttonCommit =按钮(框架,文本=“写入文件”,命令= lambda:getInput())
    getInput
中的第11行的文件“ C:/ Users / Marcelo / Desktop / Web Develop / GUI编程Python / p13.py”       inputValue = textBox.get(“ 1.0”,“ end-1c”)
  AttributeError:'NoneType'对象没有属性'get'***

因此,我无法在控制台中打印文本框的内容。 我在这里找到了此代码示例,该示例有效:

from tkinter import *
root=Tk()
def retrieve_input():
    inputValue=textBox.get("1.0","end-1c")
    print(inputValue)

textBox=Text(root, height=2, width=10)
textBox.pack()
buttonCommit=Button(root, height=1, width=10, text="Commit", 
                    command=lambda: retrieve_input())
#command=lambda: retrieve_input() >>> just means do this when i press the button
buttonCommit.pack()

mainloop()

0 个答案:

没有答案