Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从其他类访问screen manager?(基维)_Python_Kivy - Fatal编程技术网

Python 如何从其他类访问screen manager?(基维)

Python 如何从其他类访问screen manager?(基维),python,kivy,Python,Kivy,我相信这将是另一个简单的方法,但我不确定如何从python代码中的不同屏幕中访问我的屏幕管理器。我可以让它在kv文件中使用root.manager.current='screen'进行切换,但这在python中显然不起作用 my.kv: ... <Screen3> GridLayout: Button: text:"submit" on_press: root.submit() 。。。 网格

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

my.kv:

...
<Screen3>
    GridLayout:
        Button:
            text:"submit"
            on_press: root.submit()
。。。
网格布局:
按钮:
案文:“提交”
按:root.submit()
main.py

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()
来自kivy import yadayada的

kv_str=”“”
画布:
矩形:
pos:self.pos
大小:self.size
画布:
矩形:
pos:self.pos
大小:self.size
画布:
矩形:
pos:self.pos
大小:self.size
"""
建筑商。荷载串(kv_str)
类别屏幕1(屏幕):
通过
第2类屏幕(屏幕):
通过
第3类屏幕(屏幕):
def提交(自我):
#试图在这里切换屏幕
类别MyApp(应用程序):
def生成(自):
sm=屏幕管理器()
sm.add_小部件(Screen1(name='Screen1'))
sm.add_小部件(Screen2(name='Screen2'))
sm.add_小部件(Screen3(name='Screen3'))
返回sm
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
MyApp().run()
在您的
submit()
方法中,您可以使用:

self.manager.current = `screen1`