Кнопка Kivy: как назначить команду on_press, определенную в другой функции в том же классе - PullRequest
0 голосов
/ 02 мая 2020

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

Я пытаюсь заставить кнопку Kivy запустить команду on_press. Команда определена в другой функции, которая принадлежит тому же классу. Однако я всегда получаю следующую ошибку:

self.searchButton.bind (on_press = self.searchRecipe ())
Файл "kivy_event.pyx", строка 419, в файле kivy._event. EventDispatcher.bind AssertionError: None не вызывается

Я уже рассматривал подобные вопросы ( здесь и здесь ), но все еще не мог понять, что я Я делаю неправильно.

Я должен также добавить, что ради обучения я не хочу сейчас использовать файлы .kv, но включаю все в мой python скрипт. Получив хорошее представление об этом, я попытаюсь перенести некоторые части в файл .kv.

Ниже приведен минимальный (нерабочий) пример. Конечно, функция searchRecipe должна делать больше, чем просто печатать (подключаться к базе данных SQLite и выполнять другие действия), но это всего лишь попытка.

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout


class RootWindow(BoxLayout):
    def __init__(self, **kwargs): 
        super(RootWindow, self).__init__(**kwargs)     
        self.orientation = 'vertical'

        self.searchButton = Button(text="Search")
        self.searchButton.bind(on_press=self.searchRecipe())                                  
        self.add_widget(self.searchButton)

    def searchRecipe(self):
        print("It works!")

class RecipApp(App):
    def build(self):
        return RootWindow()

if __name__ == "__main__":
    RecipApp().run()

1 Ответ

0 голосов
/ 02 мая 2020
self.searchButton.bind(on_press=self.searchRecipe())

self.searchRecipe() оценивается как None. Вы хотите self.searchButton.bind(on_press=self.searchRecipe).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...