Функция привязки кнопки Kivy с аргументом

Я пытаюсь узнать, как создать приложение в Kivy, и у меня проблема с отправкой аргумента функции. Я хочу отправить текст из ввода в функцию и распечатать его. Может кто-нибудь сказать мне, как я могу это сделать?

from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.textinput import TextInput from kivy.uix.button import Button class TutorialApp(App): def gratulation(self, *args): print args def build(self): boxLayout = BoxLayout(spacing=10,orientation='vertical') g = TextInput(text='Enter gratulation', multiline=False, font_size=20, height=100) button = Button(text='Send') button.bind(on_press=self.gratulation) boxLayout.add_widget(g) boxLayout.add_widget(button) return boxLayout if __name__ == "__main__": TutorialApp().run() 

    2 Solutions collect form web for “Функция привязки кнопки Kivy с аргументом”

    Yo должен получить текст из «g», а затем отправить его на обратный вызов кнопки, есть два способа сделать это, с помощью лямбда-функции или вызвать метод класса, приближающийся к нему.

    Лямбда Версия:

     from __future__ import print_function ##Need to import this for calling print inside lambda def build(self): boxLayout = BoxLayout(spacing=10,orientation='vertical') g = TextInput(text='Enter gratulation', multiline=False, font_size=20, height=100) button = Button(text='Send') buttoncallback = lambda:print(g.text) button.bind(on_press=buttoncallback) ... 

    Частичная версия:

     from functools import partial ##import partial, wich allows to apply arguments to functions returning a funtion with that arguments by default. def build(self): boxLayout = BoxLayout(spacing=10,orientation='vertical') g = TextInput(text='Enter gratulation', multiline=False, font_size=20, height=100) button = Button(text='Send') buttoncallback = partial(self.gratulation, g.text) button.bind(on_press=buttoncallback) ... 

    Один из способов сделать это:

     from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.textinput import TextInput from kivy.uix.button import Button class TutorialApp(App): def gratulation(self, instance): print(self.g.text) def build(self): boxLayout = BoxLayout(spacing=10,orientation='vertical') self.g = TextInput(text='Enter gratulation', multiline=False, font_size=20, height=100) button = Button(text='Send') button.bind(on_press=self.gratulation) boxLayout.add_widget(self.g) boxLayout.add_widget(button) return boxLayout if __name__ == "__main__": TutorialApp().run() 

    Надеюсь, поможет!

     
    Interesting Posts for Van-Lav

    Объект 'numpy.ndarray' не имеет атрибута 'read'

    Войдите в базу 2 в python

    Проблемы, связанные с перехватом подпроцесса в режиме реального времени

    Django 1.9 + Пассажир на Dreamhost: веб-приложение не может быть запущено

    Программа Fortran не работает в зависимости от оператора записи перед вызовом подпрограммы

    Facebook Python SDK

    Найдите 4 значения в размере окна 6, которые соответствуют критериям, затем добавьте в список, пока 3 не соответствуют критериям, которые не включают последние 3 -> Повторите следующее окно. питон

    Как использовать SQLAlchemy отражение с Sybase?

    `elif` в условных выражениях списка

    Как получить идентификатор рабочего листа из Google Spreadsheet с помощью python?

    Вычитание между различными значениями типа данных в python

    Почему я получаю AttributeError: объект «KerasClassifier» не имеет атрибута «модель»?

    Использование Pylint для отображения ошибок и предупреждений

    Невозможно установить Python-MySQL на OS X 10.10 Yosemite

    Попытка понять исходный код Django и причину отсутствия аргумента TypeError

    Python - лучший язык программирования в мире.