WxPython window 没有关闭

WxPython window not closing

我学会了如何使用 WxPython 检测 window 关闭,但我遇到了问题。当我单击右上角的 'X' 时,我希望出现一个对话框,上面写着 'Are you sure you want to exit?' 和 2 个按钮,是或否。那也行。但是,当我单击是时,它应该会关闭,但当我单击否时,它应该不会关闭。否工作正常,但当我单击是时,对话框关闭并再次打开,我无法关闭主应用程序...我不得不使用任务管理器...我做错了什么?请帮我!这是我的关闭函数:

def OnExit(self, event):
    
    if event.GetEventType() == wx.EVT_CLOSE.typeId:
        
        dial = wx.MessageDialog ( None, 'Are you sure you want to exit?', 'Exclamation',
        wx.YES_NO | wx.ICON_EXCLAMATION )
        
        if dial.ShowModal() == wx.ID_NO:
            
            pass
        
        else:
            self.Close()

请帮帮我!任何答复将不胜感激!!提前致谢!

毕竟,您是在调用 self.Close() 并因此创建一个新的 EVT_CLOSE 事件,使您进入无限循环。
And,由于您的 if 语句的结构,您无法再使用菜单 File->Quit 关闭程序。
我会按照这些建议提出一些建议。

    if event.GetEventType() == wx.EVT_CLOSE.typeId:
        
        dial = wx.MessageDialog ( self, 'Are you sure you want to exit?', 'Exclamation',
        wx.YES_NO | wx.ICON_EXCLAMATION )
        
        if dial.ShowModal() == wx.ID_NO:
            return
        
    self.Destroy()