Reputation: 167
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
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