Ключевое слово args
Ключевое слово args используется при обращении к функциям обратно вызова для передачи им аргументов. Это относится к аргументам, переданным обратному вызову. Немножко усложним пример для app:
from kivy. app import App
from kivy.lang import Builder
KV = '''
BoxLayout:
orientation: 'vertical'
Button:
text: "Кнопка1"
on_press: app.press_button (*args)
Button:
text: "Кнопка2"
on_press: app.press_button (*args)
TextInput:
id:ti1
text: app.name
on_focus: self.insert_text ("Фокус" if args[1] else "Нет")
'''
class MainApp (App):
def build (self):
return Builder.load_string(KV)
def press_button (self, instance):
print (self)
self.root.ids.ti1.text="Вы нажали на кнопку: " + instance.text
if __name__ == '__main__':
MainApp().run()
Здесь у нас вместо метки используется текстовое поле (TextInput). Cобытие нажатия кнопки (on_press), будет обработано функцией press_button (*args). В скобках указаны аргументы, которые будут переданы в данную функцию (звездочка * говорит о том, что будут переданы все аргументы от текущего виджета или по сути сам виджет).
У виджета TextInput определено событие получения фокуса (on_focus). Для обработки этого события будет использоваться функция insert_text (вставить текст): self.insert_text («Фокус» if args[1] else «Нет»). Какой текст будет вставлен, зависит от значения args[1]. Если тестовое поле получит фокус, то в поле ввода будет вставлен текст «Фокус», если поле для ввода текста потеряет фокус, то будет
вставлено слово «Нет».
