在 KivyMD Python 中更改启动屏幕时如何在启动时显示或关闭消息?
How to show or dismissed a message at startup when the start screen is changed in KivyMD Python?
我是 Python 的初学者。如果我的 KivyMD 应用程序中的起始屏幕是 screen1,我想关闭一条消息。如果起始屏幕是屏幕 2 或任何其他屏幕,则应始终显示该消息。我该怎么做?
这是我的代码。
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()
我尝试了几种方法,但找不到正确的解决方案。请帮助我。
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()
我是 Python 的初学者。如果我的 KivyMD 应用程序中的起始屏幕是 screen1,我想关闭一条消息。如果起始屏幕是屏幕 2 或任何其他屏幕,则应始终显示该消息。我该怎么做?
这是我的代码。
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()
我尝试了几种方法,但找不到正确的解决方案。请帮助我。
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()