В Python tkinter параметр «команда» для виджета «Кнопка» предназначен для указания функции, которую нужно выполняться при нажатии кнопки. Однако распространенным заблуждением среди новичков является наблюдение, что функция, связанная с «командой», выполняется даже во время объявления кнопки.
Чтобы понять это поведение, нам нужно углубиться в то, как Python обрабатывает параметры функции. Когда вы передаете функцию в качестве параметра, есть две возможности:
В примере кода вы указали, Hello() передается в качестве параметра виджету «Кнопка», что означает, что функция выполняется немедленно, а ее возвращаемое значение передается в «команду». Поскольку Hello() ничего не возвращает, она возвращает None, который затем присваивается параметру «command» кнопки, фактически ничего не делая.
Чтобы решить эту проблему и выполнить функцию только при нажатии кнопки, вам следует передать объект функции, например:
hi = Button(frame, text="Hello", command=Hello)
Таким образом, когда кнопка при нажатии будет вызвана функция Hello(), которая выполнит запланированный код.
Кроме того, если вам нужно передать аргументы функции, вы можете использовать лямбда-выражение для переноса вызова функции, как показано ниже. :
hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))
В этом случае лямбда-выражение гарантирует, что функция Goodnight() не выполняется во время объявления кнопки, а ждет, пока кнопка не будет нажата и команда не будет выполнена.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3