在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'