【问题标题】:I want to open MDDialog right after screen is changed in Python/KivyMD我想在 Python/KivyMD 中更改屏幕后立即打开 MDDialog
【发布时间】:2021-07-25 09:50:46
【问题描述】:

它是用python 3.9.6、kivy 2.0.0rc4 和kivymd 0.104.2 制作的。我想在播放器更改屏幕后(从"NextWindow" 到"BeginNames")打开MDDialog 不带 按钮。所以基本上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)

【问题讨论】:

    标签: python kivy kivymd


    【解决方案1】:

    你可以使用Screen的on_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')
    

    【讨论】:

      猜你喜欢
      • 2020-05-23
      • 1970-01-01
      • 2014-10-30
      • 2021-05-21
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2021-12-10
      相关资源
      最近更新 更多