我想在 Python/KivyMD 中更改屏幕后立即打开 MDDialog

I want to open MDDialog right after screen is changed in Python/KivyMD

它是用 python 3.9.6kivy 2.0.0rc4kivymd 0.104.2 制作的。我想在播放器更改屏幕(从 "NextWindow""BeginNames")后立即打开没有 按钮的 MDDialog 。所以基本上 MDDialog 应该在玩家进入 "BeginNames" 屏幕后立即打开。我认为这会相当容易。我只是不知道该怎么做。我无法在 google 中查找。这是我的 python 代码:

kv = '''
#:import Factory kivy.factory.Factory
<ItemConfirm>
    divider: None
    CheckboxLeftWidget:
        id: check
        score: root.text
        group: "check"
        on_active: app.check_active(self.group)

<ConfirmButton@MDRectangleFlatButton>:
    text: 'CONFIRM'
    text_color: 255/255, 255/255, 0, 1
    disabled: not app.active
    on_release: app.score_limit()

<ConfirmDialog>:
    title: "Score Limit"
    bg_color: (5, 0, 0)
    type: "confirmation"
    auto_dismiss: False
    items:
        [Factory.ItemConfirm(text="30"),
        Factory.ItemConfirm(text="40"),
        Factory.ItemConfirm(text="50"),
        Factory.ItemConfirm(text="60")]
    buttons: [ Factory.ConfirmButton() ]
'''

class NextWindow(MDFloatLayout):

    def twoteams_off(self):
        self.ids.my_2.source = 'icons/2teams.png'
        myapp.screen_manager.transition = SlideTransition(direction='left', duration=.25)
        myapp.screen_manager.current = 'BeginNames'

class BeginNames(MDFloatLayout):
    pass

class MyApp(MDApp):

    def build(self):
        Builder.load_string(kv)
        self.screen_manager = ScreenManager()

        self.nextwindow = NextWindow()
        screen = Screen(name='Second')
        screen.add_widget(self.nextwindow)
        self.screen_manager.add_widget(screen)

        self.beginnames = BeginNames()
        screen = Screen(name='BeginNames')
        screen.add_widget(self.beginnames)
        self.screen_manager.add_widget(screen)

你可以使用Screenon_enter()方法来完成你想要的:

class MyApp(MDApp):

    def build(self):
        Builder.load_string(kv)
        self.screen_manager = ScreenManager()

        self.nextwindow = NextWindow()
        screen = Screen(name='Second')
        screen.add_widget(self.nextwindow)
        self.screen_manager.add_widget(screen)

        self.beginnames = BeginNames()
        screen = Screen(name='BeginNames')
        screen.on_enter = self.open_dialog  # set code to be run whenever this Screen is entered
        screen.add_widget(self.beginnames)
        self.screen_manager.add_widget(screen)
        return self.screen_manager  # missing from your code

    def open_dialog(self, *args):
        # code to open dialog
        print('open dialog')