给出过多的位置参数

时间:2019-09-03 07:41:35

标签: python-3.x tkinter

你好,聪明的人,

我有一个小程序,在单击按钮时,应该根据用户条目,用新列表更新组合框。

事实上,我假设不需要给出任何参数,因为被调用函数“获取”用户条目,然后更新组合框。无需其他外部信息。

我不幸收到错误消息:

TypeError:Func_Update_MA() takes 1positional argument but 2 were given.

如何解决此问题? 老实说,我并没有真正了解整个“自我”,但我几乎尝试了使用自我,不使用自我并将其与args *或kwargs **(对我来说是另一个奥秘)相结合的每种组合。

如果您需要更多代码,我将不提供它。

非常感谢!

class Class_MA_Win(): 

    def __init__(self, Win_MA_Sel, Cockpit_Win):  

        Btt_Update_MA = Button(self.Mitarbeiter_Selection_Win, text="Liste Updaten")
        Btt_Update_MA.bind("<Button-1>",self.Func_Update_MA)
        Btt_Update_MA.grid(column=2, row=3, padx=10, pady=10)


    def Func_Update_MA(self):
        Entry_name = self.Ent_first_name_MA.get()
        Entry_lastname = self.Ent_last_name_MA.get()
        Entry_ID = self.Ent_ID_MA.get()

1 个答案:

答案 0 :(得分:0)

每当您使用widget.bind(...)时,它将返回一个事件对象,该对象具有许多描述事件的属性。然后将其传递给您的函数Func_Update_MA,该函数不接受任何参数,因此不接受错误。

要解决此问题,只需将事件作为arg接受:

def Func_Update_MA(self,event=None):
    ...

您还提到了argskwargs,但您似乎错误地将星号定位。正确的是*args**kwargs,如下所示:

def Func_Update_MA(self, *args, **kwargs):
    ...