Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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中更改屏幕而不使用屏幕管理器类_Python_Kivy_Screen - Fatal编程技术网

在Python中更改屏幕而不使用屏幕管理器类

在Python中更改屏幕而不使用屏幕管理器类,python,kivy,screen,Python,Kivy,Screen,我在所有屏幕上都使用手势,我不能使用屏幕管理器类来管理我的屏幕,至少我相信是这样。我可以使用manger.current='some_screeen'导航.kv文件,但无法在.py文件中导航 我一直在尝试.py文件中的Runner().ids.manager.current='some_screen',但它不起作用。甚至没有抛出错误。屏幕根本没有改变 基本代码(为了简洁起见): 然后在KV文件中,我创建了屏幕管理器 <Runner>: ScreenManager:

我在所有屏幕上都使用手势,我不能使用屏幕管理器类来管理我的屏幕,至少我相信是这样。我可以使用
manger.current='some_screeen'
导航.kv文件,但无法在.py文件中导航

我一直在尝试.py文件中的
Runner().ids.manager.current='some_screen'
,但它不起作用。甚至没有抛出错误。屏幕根本没有改变

基本代码(为了简洁起见):

然后在KV文件中,我创建了屏幕管理器

<Runner>:
    ScreenManager:
        id: manager

        Screen:
            name: 'main_screen'
            Button:
                on_press:
                    manager.current = 'screen1'
        Screen:
            name: 'screen1'
            Button:
                on_press:
                    manager.current = 'home_screen'
:
屏幕管理器:
id:经理
屏幕:
名称:“主屏幕”
按钮:
新闻界:
manager.current='screen1'
屏幕:
名称:“屏幕1”
按钮:
新闻界:
manager.current='主屏幕'
我一直在尝试.py文件中的Runner().ids.manager.current='some_screen',但它不起作用。甚至没有抛出错误。屏幕根本没有改变

它工作得很好,只是没有做到你所相信的。当您编写
Runner()
时,您会得到Runner类的一个新实例,它有自己的子类,包括自己的ScreenManager。这一个与您在gui中显示的一个无关。当您设置其当前属性时,ScreenManager会尽职尽责地更改屏幕,只是您无法看到


您真正想要的是更改正在gui中显示的小部件的
current
属性。做到这一点的最佳方法取决于上下文,您已经忽略了上下文(始终尝试提供一个完整的可运行示例,不清楚您的失败代码是什么样子的)。但是,在本例中,Runner实例是您的根小部件,可通过
App.get\u running\u App().root
访问,因此您可以编写
App.get\u running\u App().root.ids.manager.current='some\u screen'
。同样,根据您的代码结构,可能会有更简洁的方法,但这始终是一个选项。

您是否发现任何错误?或者你的预期行为和你的经历是什么?读这篇文章我有点困惑。我知道您正在使用Kivy,并且在.py文件中缺少很多处理。“到底是什么?”托克斯,谢谢你回答我的问题!险恶当场回答了我的问题。很抱歉,我没有包含更多的代码。正如我所想,很多都是多余的。是的!这正是我想要实现的。非常感谢你。代码很有意义,对我来说很简洁,因为我有时使用类似的命令字符串。但是我从来没有使用过
get_running_app().root
,所以这对于我的Kivy编码曲目来说会非常有帮助!
<Runner>:
    ScreenManager:
        id: manager

        Screen:
            name: 'main_screen'
            Button:
                on_press:
                    manager.current = 'screen1'
        Screen:
            name: 'screen1'
            Button:
                on_press:
                    manager.current = 'home_screen'