Simon, > ...I want to make each button clickable
The buttons are clickable so I'm not absolutely sure what you mean? Do you mean you want to add some action to them when they are clicked? Thats done with the command option in Tkinter. define a function and assign it to the button. In this case it will likely be the same function for all buttons so you might want to do a wee bit of trickery like: def func(x,y): #x,y the button coords # do something here for i in range(length): for j in range(length): self.dict['%s%s' % (i, j)] = Button(sel.frame, text = ' ' command = lambda x=i,y=j: func(x,y)) That uses the default values of the lambda function to pass the coords of the button being pressed to your generic function. func can then use those coords to address the button in the dictionary to update the label or appearance etc. One other wee point: self.dict['%s%s' % (i, j)].grid(row = i, column = j) You don't need to use a string for a key in a dictionary, the tuple will be just fine so you can replace the string formatting stuff with: self.dict[(i, j)].grid(row = i, column = j) HTH, Alan G Author of the learn to program web tutor http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor