Kusal Darshana
Kusal Darshana

Reputation: 167

How to show or dismissed a message at startup when the start screen is changed in KivyMD Python?

I'm a Beginner to Python. I want to dismiss a message, if the starting screen is screen1 in my KivyMD App. If the starting screen is screen2 or any other screen the message should always be displayed. How would I do that?

Here is my Code.


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:
    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
                ),
            ],
        )
        self.add_songs_dialog.open()

Mode().run()

I tried several ways but I could not find the right solution. Please help me.

Upvotes: 0

Views: 155

Answers (1)

Utopion
Utopion

Reputation: 1128

from kivy.lang.builder import Builder
from kivy.uix.screenmanager import Screen
from kivymd.app import MDApp
from kivy.uix.popup import Popup

screen_helper = """
ScreenManager:
    Screen1:
    Screen2:

<Screen1>:
    name : 'screen1'
    MDFlatButton:
        id: button
        text: "Go to Page 2"

<Screen2>:
    name : 'screen2'
    MDFlatButton:
        id: button
        text: "Go to Page 1"

<CustomPopup>:
    size_hint: None, None
    size: dp(350), dp(300)
    pos_hint: {'center_x': .5, 'center_y': .5}
    MDLabel:
        text: 'I am displayed on every screen except "screen1"'
"""


class Screen1(Screen):
    pass

class Screen2(Screen):
    pass

class CustomPopup(Popup):
    pass

class MyApp(MDApp):
    def build(self):
        return Builder.load_string(screen_helper)

    def change_screen(self, name):
        self.root.current = name
        if not name == "screen1":
            CustomPopup().open()

    def on_start(self):
        self.root.get_screen("screen1").ids["button"].bind(on_press=lambda w: self.change_screen("screen2"))
        self.root.get_screen("screen2").ids["button"].bind(on_press=lambda w: self.change_screen("screen1"))

MyApp().run()

Upvotes: 1

Related Questions