0

Can't understand why this code always shows me the same result: i=4

for i in range(0,5):
    self.close_deal[i].clicked.connect(lambda:self.printme(i))
def printme(self,i):
    print('i=',i)

but when i write it as:

self.close_deal[0].clicked.connect(lambda:self.printme(0))
self.close_deal[1].clicked.connect(lambda:self.printme(1))
self.close_deal[2].clicked.connect(lambda:self.printme(2))
self.close_deal[3].clicked.connect(lambda:self.printme(3))
self.close_deal[4].clicked.connect(lambda:self.printme(4))

i receive different results

three_pineapples
  • 11,579
  • 5
  • 38
  • 75
Anton
  • 1
  • `lambda *args, i=i: self.printme(i)`. – ekhumoro Oct 03 '15 at 13:50
  • 2
    Possible duplicate of [QtCore.QObject.connect in a loop only affects the last instance](http://stackoverflow.com/questions/19510860/qtcore-qobject-connect-in-a-loop-only-affects-the-last-instance) – three_pineapples Oct 04 '15 at 08:51

0 Answers0