从“on_enter”内部调用时 Kivy 弹出窗口行为不当

我试图显示一个弹出窗口,以防今天是数据库上的日期。

问题是弹出窗口,但它似乎是在主屏幕后面构建的。我认为这是由于在“on_enter”方法上调用的,但无法解决此问题。

http://img.mukewang.com/64acfec00001ec8905690410.jpg

请注意,此“设置”按钮是从主屏幕而不是弹出窗口本身呈现的。

这是我的 kv 文件:


#:import Factory kivy.factory.Factory

<ScreenManager>:



<DiaDeRevisao@Popup>:

    title: 'Atenção dia de revisão'

    auto_dismiss: False

    size_hint:0.7,0.7

    BoxLayout:

        canvas.before:

            Color:

                rgba:(1,1,1,1)

            Rectangle:

                size: self.size

                pos: self.pos

        BoxLayout:

            orientation:'vertical'

            MDLabel:

                text:'Hoje é dia de revisão'

            Button:

                text: 'OK'

                on_press: root.dismiss()


<FileChooserPop@Popup>:

    title:'Escolha o arquivo de audio MP3'

    BoxLayout:

        canvas.before:

            Color:

                rgba:(0,0,0,0.35)

            Rectangle:

                size: self.size

                pos: self.pos


        orientation: 'vertical'


        BoxLayout:

            size_hint_y: None

            height: sp(52)


            Button:

                text: 'Icon View'

                on_press: fc.view_mode = 'icon'

            Button:

                text: 'List View'

                on_press: fc.view_mode = 'list'


        FileChooser:

            id: fc

            FileChooserIconLayout

            FileChooserListLayout


        BoxLayout:

            size_hint_y: None

            MDTextButton:

                size_hint_x:0.4

                text: 'Voltar'

                on_press: root.dismiss()


            MDIconButton:

                halign:'center'

                icon:'content-save'

                on_press:root.selected(fc.path, fc.selection)

                on_release: root.manager.current = 'Principal'


<Main>:

    BoxLayout:

        orientation:"vertical"

        spacing:'50dp'

        padding:'70dp'

        BoxLayout:

            MDTextButton:

                text: 'Revisões'

                on_press: root.manager.current = 'Revisoes'

#                on_release:Factory.FileChooserPop().open()


这很奇怪,我无法弄清楚。


我很感激任何帮助。干杯!


呼唤远方
浏览 121回答 1
1回答

撒科打诨

问题是该on_enter()事件触发得太早,因此它Popup会在Main&nbsp;Screen.&nbsp;您可以通过在显示Popup.&nbsp;我改变:Factory.DiaDeRevisao().open()到:Clock.schedule_once(lambda&nbsp;dt:&nbsp;Factory.DiaDeRevisao().open())将提供延迟并允许Popup显示在 的顶部Screen。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python