You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:06:03