tkinter的Entry组件调用get()方法报NoneType无对应属性错误如何解决?
错误原因
- Tkinter中
pack()、grid()、place()三个布局方法的返回值均为None,你将Entry组件实例化和pack()调用写在同一行赋值给var,实际var拿到的是pack()返回的空值,并非Entry组件对象,因此调用get()方法时会抛出NoneType无对应属性的报错。 - 额外注意:你当前在
root.mainloop()启动前就调用get(),此时窗口刚完成初始化,用户还没有进行任何输入操作,就算修复了赋值问题,拿到的也只会是空字符串。如果要获取用户输入的实际内容,建议把get()的调用绑定到按钮点击等用户主动触发的事件中。
修复代码示例
基础修复版(仅解决报错问题)
from tkinter import * root = Tk() root.geometry("500x300") # 拆分组件实例化和布局两步,保证var拿到的是Entry对象 var = Entry(root, width = 50) var.pack() # 此时获取的是组件初始的空值 text = var.get() print(text) root.mainloop()
实用功能版(点击按钮获取用户输入)
from tkinter import * root = Tk() root.geometry("500x300") var = Entry(root, width = 50) var.pack() def get_input_content(): text = var.get() print(f"你输入的内容为:{text}") # 添加按钮,点击时触发获取输入的逻辑 Button(root, text="获取输入内容", command=get_input_content).pack() root.mainloop()
内容的提问来源于stack exchange,提问作者AhnafXD
相关产品推荐
相关产品推荐

