«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Когда выполняется функция параметра «команда» кнопки?

Когда выполняется функция параметра «команда» кнопки?

Опубликовано 9 ноября 2024 г.
Просматривать:765

When is the Button\'s \

Выполнение параметра «команда» кнопки при объявлении: разгадка тайны

В Python tkinter параметр «команда» для виджета «Кнопка» предназначен для указания функции, которую нужно выполняться при нажатии кнопки. Однако распространенным заблуждением среди новичков является наблюдение, что функция, связанная с «командой», выполняется даже во время объявления кнопки.

Чтобы понять это поведение, нам нужно углубиться в то, как Python обрабатывает параметры функции. Когда вы передаете функцию в качестве параметра, есть две возможности:

  • Передача объекта функции: это достигается путем простой ссылки на имя функции, например, команда=Hello.
  • Передача возвращаемого значения функции. Это делается путем заключения вызова функции в круглые скобки, например, команда=Hello().

В примере кода вы указали, Hello() передается в качестве параметра виджету «Кнопка», что означает, что функция выполняется немедленно, а ее возвращаемое значение передается в «команду». Поскольку Hello() ничего не возвращает, она возвращает None, который затем присваивается параметру «command» кнопки, фактически ничего не делая.

Чтобы решить эту проблему и выполнить функцию только при нажатии кнопки, вам следует передать объект функции, например:

hi = Button(frame, text="Hello", command=Hello)

Таким образом, когда кнопка при нажатии будет вызвана функция Hello(), которая выполнит запланированный код.

Кроме того, если вам нужно передать аргументы функции, вы можете использовать лямбда-выражение для переноса вызова функции, как показано ниже. :

hi = Button(frame, text="Hello", command=lambda: Goodnight("Moon"))

В этом случае лямбда-выражение гарантирует, что функция Goodnight() не выполняется во время объявления кнопки, а ждет, пока кнопка не будет нажата и команда не будет выполнена.

Заявление о выпуске Эта статья перепечатана по адресу: 1729295717. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3