当前位置: 首页 > 知识库问答 >
问题:

为什么Tkinter小部件存储为None?(AttributeError:“非类型”对象…)(TypeError:“非类型”对象…)[副本]

东门新立
2023-03-14
#AttributeError: 'NoneType' object has no attribute ... Example

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk

root = tk.Tk()

widget = tk.Label(root, text="Label 1").grid()
widget.config(text="Label A")

root.mainloop()

以上代码产生错误:

Traceback (most recent call last):
  File "C:\Users\user\Documents\Python\other\script.py", line 8, in <module>
    widget.config(text="Label A")
AttributeError: 'NoneType' object has no attribute 'config'

类似地,代码段:

#TypeError: 'NoneType' object does not support item assignment Example

try:                        # In order to be able to import tkinter for
    import tkinter as tk    # either in python 2 or in python 3
except ImportError:
    import Tkinter as tk

root = tk.Tk()

widget = tk.Button(root, text="Quit").pack()
widget['command'] = root.destroy

root.mainloop()

产生错误:

Traceback (most recent call last):
  File "C:\Users\user\Documents\Python\other\script2.py", line 8, in <module>
    widget['command'] = root.destroy
TypeError: 'NoneType' object does not support item assignment

在这两种情况下:

>>>print(widget)
None

这是为什么,为什么小部件存储为,或者为什么当我尝试配置我的小部件时会出现上面的错误?

这个问题基于此,要求对许多相关和重复的问题给出一个概括的答案。有关编辑拒绝,请参见此。

共有1个答案

左丘善
2023-03-14

widget存储为None,因为几何体管理器方法gridpackplacereturnNone,因此它们应该在创建小部件实例的行之外的单独行中调用,如:

widget = ...
widget.grid(..)

或:

widget = ...
widget.pack(..)

或:

widget = ...
widget.place(..)

对于问题中的第二个代码片段:

widget = tkinter.Button(...).pack(...)

应分成两行,如下所示:

widget = tkinter.Button(...)
widget.pack(...)

信息:这个答案是基于这个答案的,如果不是从大多数部分复制的话。

 类似资料:
  • 我将我的按钮放入一个数组中,但当我调用它们时,它们不在那里。如果我打印出阵列,我会得到: 我只是不知道我做错了什么。

  • 我一直在努力学习Python(目前的请求和美丽的soup4),我在网上找到了一个教程 问题是我一直得到下面的错误,根本无法弄清楚... 任何帮助都将不胜感激! 回溯(最近一次调用last):文件“C:\Users\BillyBob\Desktop\Web Scrap.py”,第14行,标题=a.string。strip()AttributeError:'NoneType'对象没有属性'strip'

  • 我目前正在构建一个烧瓶应用程序 我能够从下面的stackoverflow留言板上得到这么远,但是我不认为我做对了什么(可能忽略了什么?) 在Flask应用中运行Dash应用 这里的任何帮助都将不胜感激 这是我的服务器。py代码: 这是我的服务器。py:从应用程序导入服务器,应用程序服务器。运行(调试=True) 当我运行这一切时,我得到:

  • 我正在尝试删除空行。但是,当我试图计算空行数以查看它是否有效时,我有一个错误: AttributeError:“非类型”对象没有属性“isnull” 我的剧本: 输出: Traceback(最近的调用最后): 打印文件“\data\u vis.py”,第12行(data\u not\u empty.isnull().sum()) AttributeError:“非类型”对象没有属性“isnull”

  • 所以我有这个代码: 它应该打开一个文本为"true"的消息对话框。问题是它会给出一个编译器错误,说我不能调用基元类型int的方法。为什么会发生这种情况? 铸造按预期工作。我只是不明白为什么对象会变成一个基本类型。

  • 下面是一节课: 这是我计划的一部分: 但是我在“cr12=cr.weave(cr2)”中得到了一个错误: 对于范围内的i(最小(长度,长度(其他)): TypeError:类型为“CoordinaterRow”的对象没有len()

  • 我得到这个错误: TypeError:类型为“Cursor”的对象没有len() 当我试图执行:

  • 如何修复此错误:typeerror:类型为“generator”的对象没有len()