【发布时间】:2010-10-05 22:59:04
【问题描述】:
我正在使用来自 Jython 的 Swing 制作 GUI。 Jython 的事件处理似乎特别优雅,只需设置
JButton("Push me", actionPerformed = nameOfFunctionToCall)
但是,在课堂上尝试同样的事情变得很困难。天真地尝试
JButton("Push me", actionPerformed = nameOfMethodToCall)
或
JButton("Push me", actionPerformed = nameOfMethodToCall(self))
类的 GUI 构造方法不起作用,因为要调用的方法的第一个参数应该是 self,以便访问类的数据成员,并且另一方面,不可能通过 AWT 事件队列将任何参数传递给事件处理程序。唯一的选择似乎是使用 lambda(如 http://www.javalobby.org/articles/jython/ 建议的那样),结果如下:
JButton("Push me", actionPerformed = lambda evt : ClassName.nameOfMethodToCall(self))
它有效,但优雅已经消失了。这一切只是因为被调用的方法需要来自某个地方的 self 引用。有没有其他办法解决这个问题?
【问题讨论】:
标签: java python user-interface swing jython