0

我尝试使用 Jython 运行 python 脚本,

from javax.swing import JButton,JFrame
def action():
    execfile(r"E:\stack.py")
frame = JFrame("window")
button = JButton("button", actionPerformed = action)
frame.add(button)
frame.show()

但它显示错误:

Exception in thread "AWT-EventQueue-0" TypeError: action() takes no arguments (1 given)

在这里,我没有将任何参数传递给动作函数!

我哪里错了?

谢谢

4

1 回答 1

1

按钮按下总是传递一个事件。您设置为 JButton.actionPerformed 的任何内容都需要对其进行处理才能正常工作。

尝试这个:

from javax.swing import JButton,JFrame
def action(event):
    execfile(r"E:\stack.py")
frame = JFrame("window")
button = JButton("button", actionPerformed = action)
frame.add(button)
frame.show()

一旦您意识到这一点,这将非常有用。假设您有两个按钮绑定到同一个事件,并且您需要知道哪个按钮被按下。

def show_which_button_was_pressed(event):
   sender = event.getSource()
   print sender.getText()

顺便说一句,您也不能向 actionPerformed 方法发送超过事件。如果您愿意,可以查看此问题中的解决方法

于 2013-06-04T23:01:22.350 回答