【问题标题】:"Cannot create a consistent method resolution order (MRO) for bases Widget, Screen" when using ScreenManager in kivy在 kivy 中使用 ScreenManager 时,“无法为基础 Widget、Screen 创建一致的方法解析顺序 (MRO)”
【发布时间】:2021-06-04 13:40:58
【问题描述】:

我的代码由 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'

但是每次我运行它都会显示这个错误:

无法创建一致的方法解析 基地小部件、屏幕的订单 (MRO)

我猜是关于父类的顺序;但是,换个地方也没有用。

【问题讨论】:

    标签: python python-3.x kivy kivymd


    【解决方案1】:

    您的代码:

    class Test1(Widget, Screen):
    

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

    class Test1(Screen):
    

    Test2 类似。

    【讨论】:

      猜你喜欢
      • 2020-09-10
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多