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()

これは、一度知っておくと非常に便利です。同じイベントにバインドされた 2 つのボタンがあり、どちらが押されたかを知る必要があるとします。

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

余談ですが、actionPerformed メソッドに複数のイベントを送信することも許可されていません。必要に応じて、この質問で回避策を確認できます。

于 2013-06-04T23:01:22.350 に答える