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