>>I'm puzzled by the 'command' option in menu and Button of >>Tkinter. With the following lines,
The command value needs to be a *reference* to a function. That is not the function call itself but a reference to the function that will be \called. Let me illustrate the difference: def f(): print 'Its me!' f() # prints the message g = f # this assigns a reference to f g() # this now calls that reference, so calling g() is the same as calling f() >>menu.add_command(label="Open Viewer", command=os.system("Open my viewer &")) Here you assign the result of the os.system() call to command, in fact you want to assign a reference to a call of os.system which will be executed when the menu/button is activated. The more straightforward way to do that is to define a short function that calls os.system: def callSystem(): os.system(Mycommand) And make the menu/button reference callSystem: >>menu.add_command(label="Open Viewer", command=callSystem) Notice no parens, just the name of the function. Because we can wind up with loads of these little wrapper functions there is a shortcut called lambda. With lambda we can avoid defining a new mini function: >>menu.add_command(label="Open Viewer", command=lambda : os.system("Open my viewer &")) the thing that follows the lambda is what gets executed when the widget activates. Does that help? Alan G. http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor