wxPython窗口无法关闭。

问题描述 投票:0回答:4

当你点击 "取消 "时,它会取消... 当你点击 "确定 "时,它又弹出对话框。如何解决这个问题?

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)
python wxpython
4个回答
5
投票

会不会是quitApp被系统的CloseEvent处理程序调用了?在这种情况下,self.Close(true)只会触发一个新的CloseEvent,在这种情况下,它会再次调用quitApp并显示一个新的对话框......等等。

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


2
投票

在不了解更多的情况下(见我的评论),我可以进行一些尝试。

  1. 如果... self 是一个App,那么 self.ExitMainLoop() 将关闭程序。
  2. 如果 self 是一个框架,那么 self.Close(True) 是合适的。
  3. 如果 self 是别的什么,那么 sys.exit(0) 将关闭 Python 解释器并关闭程序。

1
投票

您需要提供更多的代码。看起来是有其他东西在触发 quitApp 函数。你的函数在那里没有循环。它可能是循环的,因为它试图关闭,而事件一直被调用。试试使用 self.Destroy() 而不是关闭框架。


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)
© www.soinside.com 2019 - 2024. All rights reserved.