"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):
正在尝试扩展 Widget
和 Screen
,但 Screen
是 Widget
,因此您不需要 Widget
。尝试将上面的代码更改为:
class Test1(Screen):
和 Test2
类似。
我的代码由 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):
正在尝试扩展 Widget
和 Screen
,但 Screen
是 Widget
,因此您不需要 Widget
。尝试将上面的代码更改为:
class Test1(Screen):
和 Test2
类似。