我有几个小部件将连接到一个需要额外参数的函数。
我发现我可以使用lambda函数来传递函数一些参数。
问题是参数在循环中被替换,而lambda函数只传递最后一个。
继承人我得到了什么:
self.widgets 是一个带有按钮组的按钮,为了简短起见,我们说它有2个按钮[QToolButton],链接到他们的按键:&#39 ;打'并且'停止'。
def connections(self):
for group in self.widgets:
self.widgets[group].clicked.connect(lambda: self.openMenu(group))
def openMenu(self,group):
print group
但无论我点击什么按钮,它总是会打印相同的组,最后一个在for循环中迭代。
有什么方法可以解决这个问题吗?
答案 0 :(得分:3)
问题是python的范围规则&关闭。您需要capture
小组:
def connections(self):
for group in self.widgets:
self.widgets[group].clicked.connect(lambda g=group: self.openMenu(g))
def openMenu(self,group):
print group