wxPython 窗口不会关闭

发布于 2024-11-25 03:25:45 字数 259 浏览 3 评论 0原文

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

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)

When you click on Cancel, it cancels... When you click OK, it pops the dialog back on. How can I fix this?

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

溺ぐ爱和你が 2024-12-02 03:25:45

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

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

Could it be that quitApp is called by the system CloseEvent handler? In that case, self.Close(true) only triggers a new CloseEvent, which in that case will call quitApp again and show a new dialog... and so on.

I suggest you quit the application with sys.exit(0) instead of self.Close(true).

成熟稳重的好男人 2024-12-02 03:25:45

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

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

Without knowing more (see my comment), I can take a few stabs:

  1. If self is an App, then self.ExitMainLoop() will close the program.
  2. If self is a Frame, then self.Close(True) is appropriate.
  3. If self is anything else, then sys.exit(0) will shut down the Python Interpreter and close the program.
抚你发端 2024-12-02 03:25:45

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

You'll need to provide more code. It looks like something else is triggering the quitApp function. Your function right there doesn't loop. It might be looping because it's trying to close and the event keeps getting called. Try using self.Destroy() instead to close the frame.

温柔女人霸气范 2024-12-02 03:25:45
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)
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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文