Kivy按钮:如何分配定义在同一类中的另一个函数的on_press命令。

问题描述 投票:0回答:1

首先我应该说我是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()
python button kivy
1个回答
0
投票
self.searchButton.bind(on_press=self.searchRecipe())

self.searchRecipe() 评估为None。你想要的是 self.searchButton.bind(on_press=self.searchRecipe).

© www.soinside.com 2019 - 2024. All rights reserved.