Lambda-выражения как обработчики событий

lambda vyrazheniya kak obrabotchiki sobytij Графические интерфейсы пользователя

Напомню, что lambda-выражения в языке Python при выполнении генерируют новые объекты анонимных функций. Если необходимо, чтобы в функцию обработчика передавались дополнительные данные, можно зарегистрировать lambda-выражение, откладывающее вызов фактической функции, и определить в нем необходимые дополнительные данные.

Как этим воспользоваться, будет показано далее в этой части книги, но для иллюстрации основных идей в примере 7.13 демонстрируется, как будет выглядеть приложение 7.12, если задействовать в нем инструкцию lambda вместо def.

Пример 7.13. PP4E\Gui\Intro\gui3b.py

import sys

from tkinter import * # lambdaвыражение генерирует функцию

widget = Button(None, # но содержит всего лишь выражение

text=’Hello event world’, command=(lambda: print(‘Hello lambda world’) or sys.exit()) ) widget.pack() widget.mainloop()

В этом примере есть небольшая хитрость: lambda-выражения могут содержать только одно выражение, поэтому здесь используется оператор or, чтобы заставить выполниться два выражения (функция print вызывается первой, а поскольку в Python 3.X она стала функцией, нам не требуется использовать sys.stdout непосредственно).

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий