0

它是用和制成python 3.9.6的。我想在播放器更改屏幕后立即打开没有按钮的 MDDialog(从到)。所以基本上应该在播放器出现在屏幕上之后立即打开。我认为这将相当容易。我只是不知道该怎么做。我无法在谷歌中查找。这是我的代码:kivy 2.0.0rc4kivymd 0.104.2"NextWindow""BeginNames"MDDialog"BeginNames"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)
4

1 回答 1

1

您可以使用的on_enter()方法Screen来完成您想要的:

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')
于 2021-07-25T13:37:33.043 回答