有关Tkinter Button用Bind绑定方法后报错的问题
各位大神好,我又来了= =这次又有一件事要麻烦各位。
背景是我在Tkinter里面有两个按钮,加号可以新增一行,然后减号可以删除一行。
目前的问题是,以下图为例,新生成的2号减号按钮按下可以正常不报错,之前的1号减号按钮按下会报错说:
“Exception in Tkinter callback
Traceback (most recent call last):
File "E:\Python\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
TypeError: DelPart() missing 1 required positional argument: 'event'”
但是两个明明是一模一样的,而且在没有2号按钮的时候,1号按钮也是没问题的,故希望各位大神提供一些思路建议。
以下是这部分的代码,请各位不吝赐教,十分感谢!
def NewMetalPart():
AddButton = Button(self.Frame2, text='+', width=1, command=AddPart) #加行按钮,绑定了AddPart方法
AddButton.grid(row=rownum, column=13)
DelButton = Button(self.Frame2, text='-', width=1) #删除按钮,绑定了DelPart方法
DelButton.grid(row=rownum, column=12)
DelButton.bind('<Button-1>', DelPart)
#DelButtonGroup.append(DelButton)
num += 1
def AddPart():
AddButton.destroy()
DelButton = Button(self.Frame2, text='-', width=1, command=DelPart)
DelButton.grid(row=rownum, column=12)
ButtonRowNum += 1
NewMetalPart() #添加新行的方法就是再重复一遍上面的方法
def DelPart(event):
pass #为了测试和简单,直接写了pass
以上是我的问题和代码,困扰了我一整天,希望可以得到解决,十分感谢!
请发完整代码,谢谢
DelPart() missing 1 required positional argument: 'event'
这个报错就是告诉你 DelPart() 函数缺少一个必要参数 event
你去检查下DelPart() 是否加上了 event 呗,或者将 event 都设置个默认值为 None
比如 DelPart(event=None),应该就不会报错了
你没有发完整代码,甚至连框架都没发,只给了一个片段,只能大致的猜测了。
看这个片段,估计你的这些代码是写在类里面的吧。。
那么类的实例化成员函数应该有个参数self来代指实例化对象,而你的这三个函数中都没有self这个参数。。
此外DelPart函数是bind绑定函数,还需要一个参数event代指所绑定的事件,
这样的话,DelPart实际上最少需要两个参数,第一个参数是self代指实例化对象,第二个参数代指绑定的事件,而你只给了一个参数,那就被分配给了实例化对象,所以提示少一个event参数。
你试一下吧。你只给了片段,以上只是猜测,不知是否正确。 Twilight6 发表于 2020-8-3 23:58
这个报错就是告诉你 DelPart() 函数缺少一个必要参数 event
你去检查下DelPart() 是否加上了 ev ...
由于本身代码很长就只截取了一部分,之后会上传全部代码,感谢您帮忙解决问题。
按照您说的方法问题已经解决,之前写的是DelPart(event),改为DelPart(event=None)就没问题了。
但还有一事想讨教,event=None相比直接传入event有什么分别吗,因为在这里这个event应该就是鼠标左键的事件吧,这样设置我没大想通,还望再多解释一下,十分感谢 sunrise085 发表于 2020-8-4 08:47
你没有发完整代码,甚至连框架都没发,只给了一个片段,只能大致的猜测了。
看这个片段,估计你的这些代码 ...
实在抱歉,由于原代码过长就只截取了一部分,问题已经解决,也谢谢您的答案,我会再试一下您的思路。感谢感谢
页:
[1]