как обернуть функцию внутри функции в одну строку, чтобы передать аргументы без ее выполнения

#javascript #python #reactjs #tkinter

Вопрос:

предположим, у меня есть простая функция с 1 параметром

  def handle_click(text):
    print(text)
 

и у меня есть много кнопок, и каждая из них должна передавать другой текст в handle_click функцию

если я передам аргумент внутри кнопки, он автоматически выполнит все функции, такие как:

 Button(command=handle_click("display this"))
Button(command=handle_click("display that"))
Button(command=handle_click("show this"))
Button(command=handle_click("show that"))
 

но я хочу, чтобы эта функция запускалась при нажатии кнопки

В React.js я мог бы использовать функцию стрелки и сделать это так:

 <Button onClick={() => {handleClick("show this")} }>
<Button onClick={() => {handleClick("show that")} }>
<Button onClick={() => {handleClick("so on")} }>
<Button onClick={() => {handleClick("so forth")} }>
 

Комментарии:

1. я хочу сделать то же самое в Python

2. Вы ищете lambda функции?

Ответ №1:

Ты мог бы сделать это:

 Button(command=lambda: handle_click("display this"))
Button(command=lambda: handle_click("display that"))
Button(command=lambda: handle_click("show this"))
Button(command=lambda: handle_click("show that"))
 

Функция не будет автоматически запускаться при определении этих кнопок, и при каждом нажатии на эти кнопки handle_click функция будет запускаться с указанными вами параметрами.

Комментарии:

1. почему кто-то недооценил мой вопрос ? :(. Можете ли вы вернуть его на 0

2. @SamandarYusupov: вероятно, потому, что подобные вопросы задавались и на них отвечали много раз, и в вашем вопросе не было никаких признаков проведения каких-либо исследований.

3. @SamandarYusupov в следующий раз сделай все возможное для поиска в Интернете. Очень вероятно, что такой вопрос уже существует.