From: Jeff E. <je...@ad...> - 2002-06-12 15:41:25
|
Shae Matijs Erisson wrote: > "rpcee" <rp...@op...> writes: > > >>Hello, could someone tell me the standard python idiom for hooking an arbitrary method invocation on a class, I have this that works, just wondered what the proper way was: >> > > I don't know what the proper way is, but I have this cheesy bit of code as part > of some button generating code. > > import java > > def getActionListener(method): > """this generates a new ActionListener on the fly, > and gives it the action you specify > specified function/method must have explicit self as first arg""" > class subAction(java.awt.event.ActionListener): > def actionPerformed(self,e): > self.action(e) > subAction.action = method > subby = subAction() > return subby > > > def bailOut(self,event): > 'exits the program' > import sys > sys.exit() > > # this_button is a JButton created elsewhere in the program > this_listener = getActionListener(bailOut) > this_button.addActionListener(this_listener) > > I know you are providing an example for rpcee who wants to assign methods to a class. But for your purpose, is there a reason why you don't just use jython's bean property short cut? def bailOut(event): import sys sys.exit() this_button.actionPerformed=bailOut Jeff Emanuel |