wxPython窗口不会关闭

时间:2011-07-18 15:06:02

标签: python wxpython

当您单击取消时,它取消...当您单击确定时,它会重新弹出对话框。我该如何解决这个问题?

def quitApp(self, event):
    dial = wx.MessageDialog(None, 'Are you sure you want to quit?','Quit',  wxYES | wxNO)
    if dial.ShowModal() == wxID_YES:
        self.Close(true)

4 个答案:

答案 0 :(得分:5)

是否可以由系统CloseEvent处理程序调用quitApp?在这种情况下,self.Close(true)仅触发一个新的CloseEvent,在这种情况下,它将再次调用quitApp并显示一个新的对话框......依此类推。

我建议您使用sys.exit(0)而不是self.Close(true)退出应用程序。

答案 1 :(得分:2)

如果不了解更多信息(请参阅我的评论),我可以采取一些措施:

  1. 如果self是应用,则self.ExitMainLoop()将关闭该计划。
  2. 如果self是一个框架,则self.Close(True)是合适的。
  3. 如果self是其他内容,则sys.exit(0)将关闭Python解释器并关闭该程序。

答案 2 :(得分:1)

您需要提供更多代码。看起来其他东西正在触发quitApp功能。你的功能没有循环。它可能是循环的,因为它试图关闭并且事件不断被调用。请尝试使用self.Destroy()关闭相框。

答案 3 :(得分:0)

def CloseTheProgram( self, event ):
   dial = wx.MessageDialog(None, 'Are you sure you want to quit?','Quit',  wx.YES | wx.NO)
        if dial.ShowModal() == wx.ID_YES:       
            self.Close(True)