Tkinter代码和教程功能一致却报Nonetype错误是什么原因?
问题原因
Tkinter 组件的grid()、pack()、place()三类布局方法的返回值为None,你在创建Entry组件时直接链式调用了grid()方法,导致变量Entry1实际存储的是空值而非Entry组件实例,后续调用.get()方法时就会抛出Nonetype相关错误。
修复方案
将Entry组件的实例化和布局操作拆分为两行,先把组件实例赋值给变量,再单独调用布局方法即可。修正后的代码如下:
from tkinter import * import random root = Tk() root.title("Simple Routines") # 拆分实例化和布局操作,保证Entry1存储的是组件实例 Entry1 = Entry(root, width=20, bg='grey') Entry1.grid(row=2, column=1) def onClick(): Name = Entry1.get() Label2 = Label(root, text=Name) Label2.grid(row=4, column=1) # 不需要后续操作的组件可直接链式调用布局方法,不影响运行 Label(root, text="What Is Your Name?").grid(row=1, column=1) Button(root, text="Enter Your Name", bg='grey', command=onClick).grid(row=3, column=1) root.mainloop()
补充说明
所有Tkinter组件如果后续需要调用方法、修改属性,都不能在创建时直接链式调用布局方法,必须拆分实例化和布局为两步操作。
内容的提问来源于stack exchange,提问作者Aspiring_Programmer1708
相关产品推荐
相关产品推荐

