为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼唤远方 2023-07-11 15:03:00
我试图显示一个弹出窗口,以防今天是数据库上的日期。问题是弹出窗口,但它似乎是在主屏幕后面构建的。我认为这是由于在“on_enter”方法上调用的,但无法解决此问题。请注意,此“设置”按钮是从主屏幕而不是弹出窗口本身呈现的。这是我的 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()这很奇怪,我无法弄清楚。我很感激任何帮助。干杯!
查看完整描述

1 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

问题是该on_enter()事件触发得太早,因此它Popup会在Main Screen. 您可以通过在显示Popup. 我改变:

Factory.DiaDeRevisao().open()

到:

Clock.schedule_once(lambda dt: Factory.DiaDeRevisao().open())

将提供延迟并允许Popup显示在 的顶部Screen


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信