在代码中,App.get_running_app().root
返回的是根部件对象。错误消息“'NoneType'对象没有属性'my_method()'”意味着根部件没有名为my_method
的方法。
解决这个问题的方法是确保在根部件中定义了my_method
方法。
以下是一个示例代码,演示了如何在Kivy应用程序中定义并调用一个名为my_method
的方法:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
class MyRootWidget(BoxLayout):
def my_method(self):
print("Hello from my_method!")
class MyApp(App):
def build(self):
root_widget = MyRootWidget()
button = Button(text="Call my_method")
button.bind(on_release=lambda _: self.call_my_method(root_widget))
root_widget.add_widget(button)
return root_widget
def call_my_method(self, root_widget):
root_widget.my_method()
if __name__ == '__main__':
MyApp().run()
在上面的示例中,我们定义了一个名为MyRootWidget
的根部件,其中包含了一个名为my_method
的方法。在MyApp
类的build
方法中,我们创建一个MyRootWidget
实例,并将一个按钮绑定到call_my_method
方法上。在call_my_method
方法中,我们通过传递root_widget
参数来调用my_method
方法。
这样,在使用App.get_running_app().root.my_method()
调用my_method
方法时就不会出现“'NoneType'对象没有属性'my_method()'”的错误了。