繁体   English   中英

如何从不同的 class 访问屏幕管理器? (基维)

[英]How do I access screen manager from a different class? (Kivy)

我相信这将是另一个简单的,但我不确定如何从 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()

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

self.manager.current = `screen1`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM