首页 > 解决方案 > 如何从不同的班级访问屏幕管理器?(基维)

问题描述

我相信这将是另一个简单的,但我不确定如何从 python 代码的不同屏幕中访问我的屏幕管理器。我可以让它在 kv 文件中使用 root.manager.current = 'screen' 进行切换,但这显然在 python 中不起作用。

我的.kv:

...
<Screen3>
    GridLayout:
        Button:
            text:"submit"
            on_press: root.submit()

主文件

from kivy import yadayada

kv_str = """
<Screen1>
    canvas:
        Rectangle:
            pos: self.pos
            size: self.size
<Screen2>
    canvas:
        Rectangle:
            pos: self.pos
            size: self.size
<Screen3>
    canvas:
        Rectangle:
            pos: self.pos
            size: self.size
"""

Builder.load_string(kv_str)

class Screen1(Screen):
  pass

class Screen2(Screen):
  pass

class Screen3(Screen):
    def submit(self):
    #trying to switch screens here

class MyApp(App):

    def build(self):
        sm = ScreenManager()
        sm.add_widget(Screen1(name='screen1'))
        sm.add_widget(Screen2(name='screen2'))
        sm.add_widget(Screen3(name='screen3'))
        return sm

if __name__ == '__main__':
      MyApp().run()

标签: pythonkivy

解决方案


在您的submit()方法中,您可以使用:

self.manager.current = `screen1`

推荐阅读