python-3.x - 作者的代码有效,但我的无效 [Kivy]
问题描述
我正在从一本关于使用 Kivy 制作应用程序的书中学习,并且有这段代码:
from kivy.app import App
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
class TestApp(App):
press_count = 1
def button_press(self, button_pressed):
print('Button Pressed', TestApp.press_count, 'TImes')
TestApp.press_count += 1
def build(self):
my_btn = Button(text='Click Me')
my_btn.bind(on_press=TestApp.button_press)
textinput = TextInput(text='Data Inside TextInput')
box_layout = BoxLayout(orientation='vertical')
box_layout.add_widget(widget=my_btn)
box_layout.add_widget(widget=textinput)
return box_layout
if __name__ == '__main__':
TestApp().run()
当我运行它时,我可以理解TypeError: button_press() missing 1 required positional argument: 'button_pressed'
我的问题是为什么这本书的作者没有收到这个错误并且代码运行?
解决方案
my_btn.bind(on_press=TestApp.button_press)
这是错误的,应该是my_btn.bind(on_press=self.button_press)
。