python - 如何在kivy python中的两个屏幕之间切换?
问题描述
我正在尝试在两个屏幕之间切换.. 但它不起作用.. 它没有显示任何内容或任何错误我不知道是什么问题,这是我的代码
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
class mainWindow(Screen):
pass
class secondWindow(Screen):
pass
class windowManager(ScreenManager):
pass
sm = ScreenManager()
sm.add_widget(mainWindow(name='main'))
sm.add_widget(secondWindow(name='second'))
class multApp(App):
def build(self):
return mainWindow()
if __name__ == "__main__":
multApp().run()
和 mult.kv
windowManager:
mainWindow:
secondWindow:
<mainWindow>:
name: "main"
Button:
text: "Submit"
on_press : root.manager.current = "second"
<secondWindow>:
name: "second"
Button:
text: "go back"
on_press : root.manager.current = "main"
解决方案
我同意约翰的回答,只是补充一下。如果您将管理器声明为一个类,我总是在构建方法中返回管理器,这也是在您的根管理器下为您的屏幕创建 id 的好习惯,这样会使它们更容易引用
<WindowManager>:
id: screen_manager
MainWindow:
id: main_window
name: "main_window"
manager: screen_manager
SecondWindow:
id: second_window
name: "second_window"
manager: screen_manager
推荐阅读
- laravel-5 - laravel 通过路由播种 db
- r - read_chunk 不适用于 rmarkdown 中的闪亮小部件
- html - 如何将这些图像放置在右侧?
- reactjs - 反应 - 孩子没有正确呈现
- r - 插入符号中的 mlpKerasDropout
- node.js - Mongoosastic 插件不会更新嵌套对象
- c# - 使用 GeometryDrawing 对象删除边距并设置矢量图标的大小
- python - 如何从 PyQt 中的辅助线程调用 Qt 对话框并等待结果?
- java - Postman Post 对 Spring Controller 的调用始终为空
- c# - Elasticsearch 6.3 - 如何对分析的字段进行排序?