Bind Function To Kivy Button
Answer : I don't think any of the answers are very clear. Neither explains that problem is that the callback given to on_press gets called with a parameter, the instance of button, so LoginScreen.auth must accept a parameter after the self : def auth(self, button): print('button pressed:', instance) The problem is not that on_press must be given via Button.bind or that the callback must be a function, it can be a bound method, and the docs cited by other answer and by comments link to ButtonbBhavior which indicates that OP use of on_press in constructor was fine: self.hello = Button(text="hello", on_press=self.auth) would have worked if auth had been as described above. If you read the Button documentation, the key seems to be to use the bind function: def callback(instance): print('The button <%s> is being pressed' % instance.text) btn1 = Button(text='Hello world 1') btn1.bind(on_press=callback)