Python:<;lambda>;类型错误:';非类型';对象不可调用

Python:<;lambda>;类型错误:';非类型';对象不可调用,python,tkinter,nonetype,Python,Tkinter,Nonetype,我试图从另一个名为Edit\u user\u admin的函数调用一个名为Add\u user的函数,我很确定我写的所有内容都正确,但我一直收到相同的错误 File "G:/PVH_work/PVH_program/ParkTheReal.py", line 395, in <lambda> Add_user = ttk.Button(frame_27, text="Add User", command=lambda: Add_user(frame_27, data_di

我试图从另一个名为
Edit\u user\u admin
的函数调用一个名为
Add\u user
的函数,我很确定我写的所有内容都正确,但我一直收到相同的错误

  File "G:/PVH_work/PVH_program/ParkTheReal.py", line 395, in <lambda>
    Add_user = ttk.Button(frame_27, text="Add User", command=lambda: Add_user(frame_27, data_dictionary)).grid(row=1, column=0)
  TypeError: 'NoneType' object is not callable
下面是添加用户的函数
Add\u user

def Add_user(form_item, data_dictionary, row_num):
    form_item.grid_forget()
    frame_28 = Frame(gui)
    frame_28.grid()

    #Declare variables for creating a new user account
    __Username  = StringVar()
    __Name      = StringVar()
    __Age       = StringVar()
    __Email     = StringVar()
    __DoB       = StringVar()



    MyProfile = ttk.Button(frame_28, text="My profile", command=lambda: My_profile_admin(frame_28, data_dictionary, row_num)).grid(row=0, column=0)
    TrainingRecord = ttk.Button(frame_28, text="Training Record", command=lambda: Training_record_admin(frame_28, data_dictionary, row_num)).grid(row=0, column=1)
    Compare = ttk.Button(frame_28, text="Compare", command=lambda: Compare_admin(frame_28, data_dictionary, row_num)).grid(row=0, column=2)
    EditUsers = ttk.Button(frame_28, text="Edit Users", command=lambda: Edit_user_admin(frame_28, data_dictionary, row_num)).grid(row=0, column=3)
    Team = ttk.Button(frame_28, text="View/Edit Team", command=lambda: Team_admin(frame_28, data_dictionary, row_num)).grid(row=0, column=4)
    Logout = ttk.Button(frame_28, text="Logout", command=lambda: Logout_so(frame_28)).grid(row=0, column=5)

我在其他函数中也遇到过此错误,但我发现在我试图调用的函数中添加一个“u”,然后在命令中添加相同的名称扩展名是有效的。

您将
分配给
添加用户
ttk.Button.grid()
返回
None

Add_user = ttk.Button(...).grid(row=1, column=0)
按钮引用和功能不应使用相同的名称;在本例中,Python将使用局部变量,而不是全局函数

使用其他名称,分别调用
.grid()

这同样适用于其他按钮

但是,如果您没有在其他任何地方使用“添加用户”按钮,则可以将其设为一行,但不必费心指定结果:

ttk.Button(
    frame_27, text="Add User", 
    command=lambda: Add_user(frame_27, data_dictionary, row_num)
).grid(row=1, column=0)
add_user_button = ttk.Button(
    frame_27, text="Add User", 
    command=lambda: Add_user(frame_27, data_dictionary, row_num))
add_user_button.grid(row=1, column=0)
ttk.Button(
    frame_27, text="Add User", 
    command=lambda: Add_user(frame_27, data_dictionary, row_num)
).grid(row=1, column=0)