"Jay" wrote: > I wold like to be able to generate buttons from a list in a file. > How would I go about making each button have a different command, > Lets say make the button print its label instead of print "." > > The problem I have is I don't know what the list is going to be until > it is opened or how big so I carnet make a def for each.
def is an executable statement, and creates a new function object everytime it's executed. if you want a new function for each pass through a loop, just put the def inside the loop: > from Tkinter import * > > class App: > def __init__(self, root): > > self.DisplayAreaListsFrame = Frame(root) > self.DisplayAreaListsFrame.pack() > > Lists = ["A1","B2","C3","D4"] > > for i in Lists: def callback(text=i): print text > self.DisplayAreaListButton = Button( > self.DisplayAreaListsFrame, > text=i, > command=callback) > self.DisplayAreaListButton.pack(side=LEFT,padx=10) > > root = Tk() > app = App(root) > root.mainloop() the only think that's a little bit tricky is scoping: you can access all variables from the __init__ method's scope from inside the callbacks, but the callbacks will be called after the loop is finished, so the "i" variable will be set to the *last* list item for all callbacks. to work around this, you have to explicitly pass the *value* of "i" to to the callback; the "text=i" part in the above example uses Python's default argument handling to do exactly that. </F> -- http://mail.python.org/mailman/listinfo/python-list