Python App.get_running_App().root.my_method()-';非类型';对象没有属性';我的方法()

Python App.get_running_App().root.my_method()-';非类型';对象没有属性';我的方法(),python,kivy,dashboard,Python,Kivy,Dashboard,按下按钮后,我尝试调用Screenmanager上的函数。但是对(App.get_running_App().root.)的调用没有为我获取对象 这些按钮对我不起作用,我也不知道为什么。 似乎有一个问题,我没有根对象,但为什么。在我试着用仪表板之前,它就起作用了 我尝试过包含ScreenManager类中我无法调用的方法 并从Dashboard类中调用方法,该类起作用 python文件: from kivy.uix.screenmanager import ScreenManager, Scre

按下按钮后,我尝试调用Screenmanager上的函数。但是对(App.get_running_App().root.)的调用没有为我获取对象

这些按钮对我不起作用,我也不知道为什么。 似乎有一个问题,我没有根对象,但为什么。在我试着用仪表板之前,它就起作用了

我尝试过包含ScreenManager类中我无法调用的方法 并从Dashboard类中调用方法,该类起作用

python文件:

from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
class DashboardScreen(Screen):

    def __init__(self, **kwargs):
        super(DashboardScreen, self).__init__(**kwargs)
        # Initialize Target Container
        App.get_running_app().root.get_character_selection_screen()


class MyScreenManager(ScreenManager):

    def __init__(self, **kwargs):
        super(MyScreenManager, self).__init__(**kwargs)
        self.add_widget(DashboardScreen(name='dashboard'))

    def get_character_selection_screen(self):
        pass


class MatrixApp(App):

    def build(self):
        return MyScreenManager()


if __name__ == '__main__':
    MatrixApp().run()
Kivy文件:

<DashboardScreen>:
    BoxLayout:
        orientation: "vertical"
        Label:
            text: "test"
:
盒子布局:
方向:“垂直”
标签:
文本:“测试”
错误消息 AttributeError:“非类型”对象没有属性 '获取字符选择屏幕'


缩进可能会出错,因为我试图将其上载到此处。

尝试使用时钟安排缩进,以便您确定应用程序和小部件已准备就绪

from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
from kivy.clock import Clock

class DashboardScreen(Screen):

    def __init__(self, **kwargs):
        super(DashboardScreen, self).__init__(**kwargs)
        Clock.schedule_once(self.after_init)

    def after_init(self, dt):
        App.get_running_app().root.get_character_selection_screen()

试着用时钟来安排,这样你就可以确定应用程序和小部件已经准备好了

from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.app import App
from kivy.clock import Clock

class DashboardScreen(Screen):

    def __init__(self, **kwargs):
        super(DashboardScreen, self).__init__(**kwargs)
        Clock.schedule_once(self.after_init)

    def after_init(self, dt):
        App.get_running_app().root.get_character_selection_screen()

你是一个天才,非常感谢你,这真的帮助了我。“我永远也猜不到这一点。”内贝勒:没问题。也许你可以接受这个答案,除非你需要别的东西。@Nebelherr:D你总有一天会明白的。对不起,这是很明显的。现在我明白了。你是个天才,非常感谢你,这真的帮助了我。“我永远也猜不到这一点。”内贝勒:没问题。也许你可以接受这个答案,除非你需要别的东西。@Nebelherr:D你总有一天会明白的。对不起,这是很明显的。现在我明白了。