2

我不知道为什么这不起作用,而且真的很烦人,

from tkinter import *

root = Tk()
def do(r, a):
    s = r.get()
    p = a.get()
Button(root, text="DEL3TE", fg="red", command=lambda: do(r, a)).grid(row=0, column=0)
r = Entry(root, width=15, bg="white").grid(row=0, column=1)
a = Entry(root, width=15, bg="white").grid(row=1, column=1)
Label(text="text1").grid(row=1, column=2)
Label(text="text2").grid(row=0, column=2)
Label(text="You have obtained the death note", fg="red").grid(row=2, column=0)
mainloop()

错误代码如下:

Traceback (most recent call last):
  File "C:\Users\anglc\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/anglc/Desktop/test.py", line 7, in <lambda>
    Button(root, text="DEL3TE", fg="red", command=lambda: do(r, a)).grid(row=0, column=0)
  File "C:/Users/anglc/Desktop/test.py", line 5, in do
    s = r.get()
AttributeError: 'NoneType' object has no attribute 'get'

不知道怎么解决,求大神帮忙,谢谢!

4

2 回答 2

11

如果您正在输入一个条目,请确保它的格式不是这样的:

r = Entry(root, width=15, bg="white").grid(row=0, column=1)

去掉一个AttributeError应该是这样的:

r = Entry(root, width=15, bg="white")
r.grid(row=0, column=1)
于 2019-02-22T04:21:33.967 回答
0

在这一行: Button(root, text="DEL3TE", fg="red", command=lambda: do(r, a)).grid(row=0, column=0)

在 lambda 之后,您需要提供:

Button(root, text="DEL3TE", fg="red", command=lambda r,a: do(r, a)).grid(row=0, column=0)

当您使用 do 函数时,您只会获得 None 值,您需要将实际值传递给 do 函数。

于 2019-02-22T04:10:34.493 回答