Python KivyMD应用如何根据启动屏幕类型控制提示消息的显示与隐藏
实现方案
你只需要在on_start方法中增加对当前初始屏幕的判断逻辑即可,Kivy的ScreenManager组件的current属性会实时存储当前激活屏幕的name值,on_start生命周期触发时初始屏幕已经加载完成,直接读取该属性做判断即可。
修改后的完整代码如下:
from kivy.lang.builder import Builder from kivy.uix.screenmanager import Screen from kivymd.app import MDApp from kivymd.uix.button import MDFlatButton, MDRaisedButton from kivymd.uix.dialog import MDDialog screen_helper = """ ScreenManager: # 如果要测试初始为screen2的效果,取消注释下行即可 # current: 'screen2' Screen1: Screen2: <Screen1>: name : 'screen1' <Screen2>: name : 'screen2' """ class Screen1(Screen): pass class Screen2(Screen): pass class Mode(MDApp): def build(self): return Builder.load_string(screen_helper) def on_start(self): self.add_songs_dialog = MDDialog( title="Add Songs", text="Your Albums are Empty.Mode has been either restored or Albums have been Deleted." "\n\nYou should add Songs to Launch Mode.", buttons=[ MDFlatButton( text='Later', font_style='Button' ), MDRaisedButton( text='Add Songs', font_style='Button', md_bg_color=self.theme_cls.accent_dark ), ], ) # 仅当初始屏幕不是screen1时弹出提示框 if self.root.current != 'screen1': self.add_songs_dialog.open() Mode().run()
验证方法
- 默认初始屏幕为
screen1时启动应用,不会弹出提示框 - 取消kv代码中
ScreenManager下的current: 'screen2'注释,初始屏幕改为screen2时启动应用,会正常弹出提示框
内容的提问来源于stack exchange,提问作者Kusal Darshana
相关产品推荐
相关产品推荐

