Я использую Tkinter для простой викторины. Есть несколько кнопок, по одной для каждого ответа, и я хотел бы запустить функцию checkAnswer с определенными параметрами при нажатии на нее.
Вы можете создать функцию более высокого порядка, чтобы обернуть свою функцию checkAnswer. Это позволит вам вернуть функцию, которая не требует никаких параметров и, следовательно, может использоваться в качестве обратного вызова.
потому что это гарантирует, что вы передаете правильные аргументы (например, не quetsion (так в оригинале)); обратите внимание на отличие от functools.partial, которое позволяет вам неправильно набирать аргументы функции и получать исключение только при нажатии на кнопку;)
Кроме того, жесткое кодирование вопросов/ответов в коде кнопки кажется неправильным...
Ответ 4 · IT Ninja
Если у вас есть функции с определенными параметрами (которые не зависят от таких вещей, как text.get()), вы можете использовать для них обертки, что было бы самым простым способом сделать это, кроме функций лямбда. Например: