kivy按钮中的on_press事件未按预期工作

时间:2015-07-25 11:02:45

标签: python kivy

以下是我的代码中的小片段。

问题: - 当加载屏幕“X”并且传递了一些参数时,调用get函数。在get我创建带有一些名称的按钮并分配on_press事件。但问题是没有按下按钮自动调用on_press事件,下一个画面进入画面。

   def get(self, service):
            """ some code"""
            but = Button(size_hint=(1, None))
            but.text = str(i['name'][0][:10])
            but.bind(on_press = self.change_screen(dict))
            print "adding widget to home  "  + str(but)
            self.home_box.add_widget(but)

    def change_screen(self, dict):
        self.screen_manager.current = 'Per_settings'

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

but.bind(on_press = self.change_screen(dict))

你正在调用self.change_screen(dict) - 这是函数调用的普通python语法,绑定方法甚至不知道它,只传递调用的结果。

您必须自行传递功能。您可以使用functools.partial自动包含参数,但请注意bind也会传递额外的参数。

from functools import partial
but.bind(on_press=partial(self.change_screen, dict))