在 kivy2 或 kivymd 中,有没有一种方法可以动态创建屏幕而不将它们添加到 kv 文件中

Posted

技术标签:

【中文标题】在 kivy2 或 kivymd 中,有没有一种方法可以动态创建屏幕而不将它们添加到 kv 文件中【英文标题】:In kivy2 or kivymd, is there a way to create a screen dynamically without adding them to a kv file 【发布时间】:2021-05-19 20:34:16 【问题描述】:

例如...假设我有很多产品。

我希望能够让程序知道某个产品被点击...很简单

但是我希望程序根据模板创建一个屏幕

基本上是即时的。

感谢您的帮助

这是我迄今为止尝试过的。

def Create_New_Product_Screen(self,question,Screen_Name):
    print(self,Screen_Name+'Made it here')
    sm = ScreenManager()
    screen = Screen(name=Screen_Name)
    sm.add_widget(screen)
    #sm.current = Screen_Name
    app = MDApp.get_running_app()
    app.change_screen(Screen_Name)

【问题讨论】:

【参考方案1】:
def Create_New_Screen(self,Screen_Name):
    app = MDApp.get_running_app()
    sm = app.root.ids['screen_manager']
    screen = Screen(name=Screen_Name)
    sm.add_widget(screen)
    sm.current = Screen_Name

现在我只需要弄清楚如何为屏幕制作模板 但这有效...我必须在 kivy 文件中找到屏幕管理器 然后调用它并创建屏幕然后切换到它。

【讨论】:

以上是关于在 kivy2 或 kivymd 中,有没有一种方法可以动态创建屏幕而不将它们添加到 kv 文件中的主要内容,如果未能解决你的问题,请参考以下文章

KivyMD RecycleView 的 FPS 和延迟较低

我可以用啥在 kivy 或 kivymd 中显示段落文本?

KivyMD 或 Kivy 中是不是有拖放功能?

有没有办法在 Android 中测试 Kivymd 应用程序?

如何在 KivyMD 中保存用户的输入(图像文件)

.spec 文件中的“ModuleNotFoundError:没有名为 'kivymd' 的模块”