I want to create a grid of buttons that will toggle colour when they are clicked. At the moment every button will trigger the bottom right button instead. Below is the code. Two questions, why is it doing this and how do I correct it?
def main(self):
root = Tk()
frame=Frame(root)
frame.grid(row=0,column=0)
self.btn= [[0 for x in xrange(20)] for x in xrange(60)]
for x in range(60):
for y in range(20):
self.btn[x][y] = Button(frame,command= lambda: self.color_change(x,y))
self.btn[x][y].grid(column=x, row=y)
root.mainloop()
def color_change(self,x,y):
self.btn[x][y].config(bg="red")
print x,y
I figured it out. Replace:
self.btn[x][y] = Button(frame,command= lambda: self.color_change(x,y))
With:
self.btn[x][y] = Button(frame,command= lambda x1=x, y1=y: self.color_change(x1,y1))
Sorry if this was a nuisance to any one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With