KIVY python:为什么屏幕管理器有时是非类型的

KIVY python:为什么屏幕管理器有时是非类型的,python,kivy,Python,Kivy,在我的代码中,我经常需要在屏幕对象中说: self.manager.current = 'screenname' 但有时我的解释器说None类型没有当前属性 我的屏幕管理器消失是正常的吗 编辑: 当我将这段代码添加到我的项目中时,就会出现问题: class EditClass(Screen): def __init__(self, **kwargs): super(EditClass, self).__init__(**kwargs) self.myin

在我的代码中,我经常需要在屏幕对象中说:

self.manager.current = 'screenname'
但有时我的解释器说None类型没有当前属性

我的屏幕管理器消失是正常的吗

编辑:

当我将这段代码添加到我的项目中时,就会出现问题:

class EditClass(Screen):
    def __init__(self, **kwargs):
        super(EditClass, self).__init__(**kwargs)
        self.myinit()

    def go_to_home(self):
        self.manager.current = "home_screen"


    def myinit(self):

        self.box0 = BoxLayout(orientation='vertical')
        self.box1 = BoxLayout(spacing=-2, size=(50,50), size_hint=(1,None))
        self.box2 = BoxLayout(orientation='vertical', padding = (5,5,5,5), spacing = 5)

        self.btn_back = Button(size=(32, 50), on_press=self.go_to_home(), size_hint=(None, 1), text="<", background_color=(0.239, 0.815, 0.552, 1))
        self.btn_title = Button(text="Edit a class", background_color = (0.239, 0.815, 0.552, 1))
        self.btn_more= Button(size=(32, 50), size_hint=(None, 1), text="=", background_color = (0.239, 0.815, 0.552, 1))

        self.anchor0 = AnchorLayout(anchor_x='right', anchor_y = 'bottom', padding=(5,5,5,5))
        self.btn_plus = Button(text="+", size=(46, 46), size_hint=(None, None), background_color=(0.239, 0.815, 0.552, 1))

        self.box1.add_widget(self.btn_back)
        self.box1.add_widget(self.btn_title)
        self.box1.add_widget(self.btn_more)

        self.anchor0.add_widget(self.btn_plus)
        self.box2.add_widget(self.anchor0)

        self.box0.add_widget(self.box1)
        self.box0.add_widget(self.box2)
        self.add_widget(self.box0)

self.manager在屏幕对象中不存在,除非该对象已通过add_widget方法添加到屏幕管理器。

您可以计划将myinit添加到uuu init_uuu,而不是将其添加到uu init中:

from kivy.clock import Clock

...
class EditClass(Screen):
    def __init__(self, **kwargs):
        super(EditClass, self).__init__(**kwargs)
        Clock.schedule_once(self.myinit, 1)

    ...

    def myinit(self, *args):
        ...

...

它并没有消失,只是在您执行self.manager.current='screenname'时还没有初始化。如何解决此问题?请发布更多代码,我们可以帮助您。我添加了一些代码。