8
我使用Jython中的Swing来制作GUI。 Jython的事件处理似乎特别优雅,只需设置使用Jython和Swing处理事件
JButton("Push me", actionPerformed = nameOfFunctionToCall)
但是,在类中尝试同一件事变得困难。天真地试图
JButton("Push me", actionPerformed = nameOfMethodToCall)
或
JButton("Push me", actionPerformed = nameOfMethodToCall(self))
从类不工作的GUI的施工方法,因为方法的第一个参数被称为应自我,为了访问类的数据成员,另一方面,不可能通过AWT事件队列将任何参数传递给事件处理程序。唯一的选择似乎是使用lambda(截至http://www.javalobby.org/articles/jython/决定),导致这样的事情:
JButton("Push me", actionPerformed = lambda evt : ClassName.nameOfMethodToCall(self))
它的工作原理,但优雅的走了。所有这些仅仅是因为被调用的方法需要从某个地方引用self。有没有其他解决方法?
哇,这是简单的!谢谢。这种方法似乎将自我参照和事件都发送给方法,因此需要将其定义为: def nameOfMethodToCall(self,evt) 这很好! – 2009-02-07 08:56:32