使用Jython&Swing处理事件

2024-09-30 16:38:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Jython的Swing来制作GUI。Jython的事件处理似乎特别优雅,刚刚设置好

JButton("Push me", actionPerformed = nameOfFunctionToCall)

然而,在一个类中尝试同样的事情会很困难。天真的尝试

^{pr2}$

或者

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引用。有别的办法吗?在


Tags: 方法lambdaself参数guijython事情push