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

Tkinter:AttributeError:NoneType对象没有属性

沈华晖
2023-03-14

我创建了这个简单的GUI:

from tkinter import *

root = Tk()

def grabText(event):
    print(entryBox.get())    

entryBox = Entry(root, width=60).grid(row=2, column=1, sticky=W)

grabBtn = Button(root, text="Grab")
grabBtn.grid(row=8, column=1)
grabBtn.bind('<Button-1>', grabText)

root.mainloop()

我让用户界面启动并运行。当我点击Grab按钮时,我在控制台上得到以下错误:

C:\Python> python.exe myFiles\testBed.py
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python\lib\lib-tk\Tkinter.py", line 1403, in __call__
    return self.func(*args)
  File "myFiles\testBed.py", line 10, in grabText
    if entryBox.get().strip()=="":
AttributeError: 'NoneType' object has no attribute 'get'

为什么entryBox设置为

共有3个答案

宰父冠玉
2023-03-14

对于entryBox.get()要访问get()方法,您需要Entry对象,但Entry(root,宽度=60). rid(row=2,列=1,粘性=W)返回无。

entryBox=Entry(根,宽度=60)创建一个新的Entry对象。

此外,您不需要entryBox=entryBox。网格(行=2,列=1,粘滞=W)因为它将重写entryBox,而不使用任何

只需替换entryBox=entryBox.grid(row=2,列=1,粘性=W)

entryBox = Entry(root, width=60)
entryBox.grid(row=2, column=1, sticky=W)
史默
2023-03-14

更改此行:

entryBox=Entry(root,width=60).grid(row=2, column=1,sticky=W)

分成这两行:

entryBox=Entry(root,width=60)
entryBox.grid(row=2, column=1,sticky=W)

就像你已经正确地做了grabBtn

荣俊
2023-03-14

条目对象和所有其他小部件的网格打包放置函数返回。在python中执行a()。b(),表达式的结果是b()返回的任何内容,因此条目(…)。网格(…)将返回None

您应该将其拆分为两行,如下所示:

entryBox = Entry(root, width=60)
entryBox.grid(row=2, column=1, sticky=W)

这样,您就可以将您的Entry引用存储在entryBox中,并按照您的预期进行布局。如果您在块中收集所有的网格和/或pack语句,这会使您的布局更容易理解和维护。

 类似资料:
  • 问题内容: 我创建了这个简单的GUI: 我启动并运行了UI。当我单击Grab按钮时,在控制台上出现以下错误: 为什么entryBox设置为None? 问题答案: 并且place在功能Entry对象和所有其他部件的回报None。在python中,执行此操作时.,表达式的结果为返回的值,因此。 你应该将其分成两行,如下所示: 这样,你就可以将参考存储在其中,并且可以按照你的期望进行布局。如果你以块的形

  • 这是我的密码: 这条线给了我错误 "属性错误:'浮点'对象没有属性'exp'"。X,t是Numpy ndarray。

  • 问题内容: 我正在开发Django应用程序,并且出现以下错误 我的模型是这样构造的 我应该做什么? 问题答案: 首先,您必须非常小心地重写以具有非可选参数。记住,每次从一个查询集中获取一个对象时,它将被调用! 这是您想要的正确代码: 如果您只使用该对象的子类,我强烈建议在Animal上设置abstract选项。这样可以确保不为动物创建表,而仅为绵羊(等)创建表。如果未设置abstract,则将创建

  • 问题内容: 我将Selenium webdriver(chrome)与Python结合使用,试图从网页上的所有链接中获取 href 。当我尝试以下操作时: 它设法获取所有链接,但是在get_attribute上出现错误: “ WebElement”对象没有属性“ Get_Attribute” 尽管到处都看起来很正常。 问题答案: “ Get_Attribute”属性不存在,但是“ get_attr

  • 问题内容: 它显示了运行时错误: 我只是python的初学者,即使在网上搜索后也无法纠正此问题。 问题答案: 错误: 表示您正在尝试将索引运算符应用于int而不是列表。所以即使在应该的时候也没有清单吗?让我们从那开始。 看这里: 在内部使用其他变量名称,看起来列表理解会在迭代过程中覆盖该变量。(不是在设置时 进行 迭代,而是在以下过程中进行。)

  • 问题内容: 我在这里遇到一些问题,在我的python包中,我已经安装了numpy,但是我仍然 遇到 此错误 ‘DataFrame’对象没有属性’sort’ 任何人都可以给我一些想法。 这是我的代码: 问题答案: 不推荐使用DataFrames,而采用以下两种方法之一: 到 由列排序(S) 要 通过索引排序 在Pandas中已弃用(但仍可用)版本0.17(2015-10-09),并引入和。它已从0.