Вывод ответа #1864597868

-

Ноу хау - от мастеров на заметку

Небольшие рецепты полезных решений

{autor_name}


{text_rank}
репутация: {repa}
{registration_date}
сообщений: {posts}
{tel_link}
#{postnumber_id}

Как известно для реализации меню appuifw.app.menu необходимо в эту переменную передать список кортежей вида (u'Заголовок', функция). Частой проблемой я вляется передача аргумента в данную функцию. Например:
аppuifw.app.menu = [(u'Menu1', func(1)), (u'Menu2', func(2))]
Все это легко решается с помощью lambda, но мне пришла идея задействовать фабрику функций (в соседней теме вспомнил об этой фиче). Примерно так:
1) переделываем функцию из например
def func(x):
. print x
в такую
def func(x):
. def fx():
. . print x
. return f
x
и теперь запись
аppuifw.app.menu = [(u'Menu1', func(1)), (u'Menu2', func(2))]
будет прекрасно выполняться. Чтото особо полезного здесь нет, зато эстетичнее кучи лямбд и читабельнее.


ответ опубликован:
Рейтинг: 5
голосов: 2



Яндекс.Метрика