如何通过Kivy的TabbedPanelItem切换屏幕 | Python开发
解决Kivy TabbedPanelItem点击切换Screen的问题
问题出在你当前的on_press绑定逻辑:root.current = "ImageScreen"里的root指的是HomeScreenLayout,而不是管理所有屏幕的AppScreenManager,所以无法触发屏幕切换。
下面是两种可行的解决方式:
方式一:直接在KV语言中通过App实例访问ScreenManager
修改"Cut"标签的on_press代码,用app.root直接获取全局的ScreenManager实例:
TabbedPanelItem: text: "Cut" on_press: app.root.current = "ImageScreen"
app代表当前运行的Kivy应用实例,app.root就是你定义的AppScreenManager,它拥有current属性可以切换屏幕。
方式二:在Python代码中绑定事件处理
如果习惯把逻辑放在Python代码里,可以给HomeScreenLayout类添加方法,再绑定到TabbedPanelItem的on_press:
Python代码部分
from kivy.app import App from kivy.uix.boxlayout import BoxLayout class HomeScreenLayout(BoxLayout): def switch_to_image_screen(self): # 获取ScreenManager并切换 App.get_running_app().root.current = "ImageScreen" class AppScreenManager(BoxLayout): pass class YourAppName(App): def build(self): return AppScreenManager() if __name__ == "__main__": YourAppName().run()
KV代码部分
修改"Cut"标签的绑定:
TabbedPanelItem: text: "Cut" on_press: root.switch_to_image_screen()
两种方式都能实现点击"Cut"标签切换到ImageScreen的效果,根据你的代码风格选择即可。
内容的提问来源于stack exchange,提问作者Gaurav
相关产品推荐
相关产品推荐

