Python 部分参数重复
我正在为循环中的button behavior对象创建Python 部分参数重复,python,kivy,partial,Python,Kivy,Partial,我正在为循环中的button behavior对象创建on_press回调,由于某些原因,该部分的所有参数与上次创建的部分的参数保持相同。 创建的简化示例: (button是实现按钮行为的类) 问题是参数arg1和arg2与循环的上一次迭代保持相同,而不是更新。因此,当我按下按钮(不管是哪一个)时,回调被调用,就好像我按下了最后一个按钮一样 为什么会发生这种情况/我如何解决这个问题?在代码段参数arg1中,arg2不会更改。因为您从未更改arg1或arg2。相反,按钮。arg1和按钮。arg2在
on_press
回调,由于某些原因,该部分的所有参数与上次创建的部分的参数保持相同。
创建的简化示例:
(button是实现按钮行为的类)
问题是参数arg1
和arg2
与循环的上一次迭代保持相同,而不是更新。因此,当我按下按钮(不管是哪一个)时,回调被调用,就好像我按下了最后一个按钮一样
为什么会发生这种情况/我如何解决这个问题?在代码段参数
arg1
中,arg2
不会更改。因为您从未更改arg1
或arg2
。相反,按钮。arg1
和按钮。arg2
在定义部分对象时进行计算,当您实际单击按钮时不会。您确定arg1
,arg2
对于列表中的所有按钮都不相同吗<代码>打印
在每次迭代中都会显示。@leaf不完全正确,我确实更改了它们,正如您从更新的代码片段中可以看出的那样。我确实在实际代码中更改了它们(这太长了,无法在这里发布有意义的部分)。
for button in list:
button.on_press=partial(my_func, button, button.arg1, button.arg2)