- {registration_date}
- сообщений: {posts}
- {tel_link}
Как известно для реализации меню 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
- 5
- 1
- 2
- 3
- 4
- 5