jython error "Исключение в потоке"AWT-EventQueue-0""

Я пытался запустить скрипт Python с использованием Jython,

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)

Здесь я не передаю никаких аргументов в действие!

куда я иду не так?

Спасибо

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. Если вы хотите, вы можете посмотреть на обходной путь в этом вопросе.

Другие вопросы по тегам