On Saturday 12 September 2009 06:57:26 Tim Roberts wrote: > chen tao <ct19850...@gmail.com> wrote: > > I have several buttons, I want to realize: when I click first > >button, the button will call a function, and the function should > >return some parameter value, because I need this value for the other > >buttons.
As Tim said - you cannot return anything, as the button command is called by the main GUI loop. If you really want to, you can set a variable global to the class, (Like self.my_passed_param) and use it in the second button - however then you have to handle cases where the user does not click the buttons in the sequence you expect. > > I tried the button.invoke() function, it almost got it...however, > >I only want it returns value when the button clicked, but because the > >program is in the class _ini_ function, so it always runs once before > >I click the button... > > Any one can give me some suggestions? > > You're thinking of your program in the wrong way. When you write a GUI, > things don't happen in order. Your __init__ function merely sets up your > window structure. The window has not actually been created or displayed at > that time. > > Later, when you call the "mainloop" function, it will start to process > messages. Your window will be displayed, and then you'll go idle while > waiting for user input. When you click a button, the mainloop will call > your handler, do a little processing, and return. > > So, your button function can't really return anything. There's nothing to > return it TO. If there is some action you need to take when the button is > clicked, then you DO that function in the button handler. This is perfectly right. - Hendrik -- http://mail.python.org/mailman/listinfo/python-list