我应该能够从一个自定义框架中删除一个包含多个自定义框架的项。第二个按钮用于将节添加到管理所有不同节的列表中:
def addSection():
sectionNumber = len(sections)
if sectionNumber <= 25:
sections.append(sectionFrame(SectionsFrame.interior,sectionNumber))
sections[sectionNumber].pack(side=TOP)
sections[sectionNumber].getButton().config(command = lambda: removeSpecificSection(sections[sectionNumber].getSectionNumber()))
现在,当我删除一个部分时,我要给下面的每一个部分在列表中的适当位置。这是分区按钮方法:
^{pr2}$section.moveDownIndex()
在它自己的类中只有self.sectionNumber=self.sectionNumber-1
。在
我遇到的问题是,如果我试图删除remove函数所触及的任何部分,那么它只会删除最后一个部分,而进入第二个调用的索引会确认总是最后一个索引。在
也许我不理解lambda函数,为什么每个按钮在调用remove函数时不使用自己的部分?在
这是一个非常常见的初学者陷阱。
lambda
是延迟绑定,这意味着它在调用时使用sectionNumber中的值,而不是定义它时的值。要获得您想要的行为,您需要使用functools.partial
:然后在removeSpecificSection方法中调用
getSectionNumber
。在相关问题 更多 >
编程相关推荐