Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Array of buttons in python

Tags:

python

tkinter

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
like image 349
whossname Avatar asked Aug 05 '13 07:08

whossname


1 Answers

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.

like image 185
whossname Avatar answered Nov 12 '22 06:11

whossname