"Cannot create a consistent method resolution order (MRO) for bases Widget, Screen" 在 kivy 中使用 ScreenManager 时

"Cannot create a consistent method resolution order (MRO) for bases Widget, Screen" when using ScreenManager in kivy

我的代码由 2 个页面组成,每个页面只有一个按钮,按下它应该显示另一页:

class Paging(ScreenManager):
    def __init__(self, **kwargs):
        super(Paging, self).__init__(**kwargs)
        self.sm = ScreenManager(transition=RiseInTransition())
        self.sm.add_widget(Test1(name='screen_one'))
        self.sm.add_widget(Test2(name='screen_two'))

class Test1(Widget, Screen):
    def __init__(self, **kwargs):
        super(Test1, self).__init__(**kwargs)
        btn1 = Button(text='page1', font_size="15sp",
        btn1.bind(on_press = self.callback)
        self.add_widget(btn1)

    def callback(self):
        print("Button is pressed")
        self.manager.transition.direction = 'left'
        self.manager.transition.duration = 1
        self.manager.current = 'screen_two'

class Test2(Widget, Screen):
    def __init__(self, **kwargs):
        super(Test1, self).__init__(**kwargs)
        btn1 = Button(text='page1', font_size="15sp",
        btn1.bind(on_press = self.callback)
        self.add_widget(btn1)

    def callback(self):
        print("Button is pressed")
        self.manager.transition.direction = 'left'
        self.manager.transition.duration = 1
        self.manager.current = 'screen_one'

但每次我 运行 它都会显示此错误:

Cannot create a consistent method resolution order (MRO) for bases Widget, Screen

我猜是关于parent 类的顺序;然而,换地方也无济于事。

您的代码:

class Test1(Widget, Screen):

正在尝试扩展 WidgetScreen,但 ScreenWidget,因此您不需要 Widget。尝试将上面的代码更改为:

class Test1(Screen):

Test2 类似。