Python 3.x bind()方法位置错误问题

Python 3.x bind()方法位置错误问题,python-3.x,tkinter,bind,Python 3.x,Tkinter,Bind,在我的项目中,我添加了一个带有按钮的bind方法 subbutton = Button(self, text='Submit', width=10) subbutton.grid(row=10, column=0, sticky='w') subbutton.bind('<Button-1>', lambda e: controller.showframe(Moderator), teacher_input(name.get(), idd

在我的项目中,我添加了一个带有按钮的bind方法

subbutton = Button(self, text='Submit', width=10)
subbutton.grid(row=10, column=0, sticky='w')
subbutton.bind('<Button-1>', lambda e: controller.showframe(Moderator),
                       teacher_input(name.get(), idd.get(), username.get(), pas.get()),
                       MakeQuestion.qcurrent_user(username.get()), ExaminPaper.ecurrent_user(username.get()) )
subbutton=按钮(self,text='Submit',宽度=10)
subbutton.grid(行=10,列=0,sticky='w')
子按钮绑定(“”,lambda e:controller.showframe(版主),
教师输入(name.get()、idd.get()、username.get()、pas.get()),
MakeQuestion.qcurrent\u用户(username.get()),testpaper.ecurrent\u用户(username.get())

这些显示有1到4个位置预兆,你给了5个。为什么会发生这种情况?

您似乎认为所有函数调用都是
lambda的一部分,而它们不是。目前,只有
controller.showframe(主持人),
是可用的。如果要从
lambda
运行多个函数,请将它们放入如下列表中:

subbutton.bind('<Button-1>', lambda e: [controller.showframe(Moderator),
                       teacher_input(name.get(), idd.get(), username.get(), pas.get()),
                       MakeQuestion.qcurrent_user(username.get()),
                       ExaminPaper.ecurrent_user(username.get())] )

谢谢,这很有效。这里使用lamda给出了事件变量“e”。如果我用
MakeQuestion.qcurrent\u user(e,username.get())
?我没有在函数参数中为此添加额外的变量。它停止了一个警告。这个“e”的作用是什么?
e
是通过
bind
函数传递的。您的
lambda
必须接受它,但是如果您的
MakeQuestion.qcurrent\u user
函数不需要它,您不应该传递它。谢谢。但它显示用户未填充的警告。代码的工作原理是一样的。最好不要使用lambda,而是创建一个新函数。@BryanOakley非常正确,我想我应该解决这个问题。我现在只关注导致错误的原因。为什么要以这种方式使用lambda?如果您为按钮创建了适当的函数,那么您的代码将更容易调试。你这样做有什么原因吗?
def buttonClick():
    controller.showframe(Moderator)
    teacher_input(name.get(), idd.get(), username.get(), pas.get())
    MakeQuestion.qcurrent_user(username.get())
    ExaminPaper.ecurrent_user(username.get())

subbutton = Button(self, text='Submit', width=10, command=buttonClick)
subbutton.grid(row=10, column=0, sticky='w')