Мне, вероятно, следует начать с того, что я абсолютный новичок с 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()