如何安全地销毁wxPython应用程序的对话框窗口?
我创建了一个wxPython应用程序,它在对话框窗口中显示一些消息。在单击对话框确定按钮之前,应用程序需要强制销毁对话框窗口。我使用wx.lib.delayedresult进行销毁调用 我的代码是:如何安全地销毁wxPython应用程序的对话框窗口?,python,wxpython,Python,Wxpython,我创建了一个wxPython应用程序,它在对话框窗口中显示一些消息。在单击对话框确定按钮之前,应用程序需要强制销毁对话框窗口。我使用wx.lib.delayedresult进行销毁调用 我的代码是: import wx dlg=wx.MessageDialog(somewindow,'somemessage') from wx.lib.delayedresult import startWorker def _c(d): dlg.EndModal(0) dlg.Destroy()
import wx
dlg=wx.MessageDialog(somewindow,'somemessage')
from wx.lib.delayedresult import startWorker
def _c(d):
dlg.EndModal(0)
dlg.Destroy()
def _w():
import time
time.sleep(1.0)
startWorker(_c,_w)
dlg.ShowModal()
当我收到下面的错误消息时,这可以做我想做的事情:
(python:15150):Gtk关键**:Gtk_小部件_销毁:断言“Gtk_是_小部件(小部件)”失败
如何在不单击对话框按钮的情况下“安全”销毁对话框?我已经有一段时间没有使用wxWidgets了,但我认为您的dlg.destroy()可能位于错误的位置。尝试将其移动到主线程中
import wx
dlg=wx.MessageDialog(somewindow,'somemessage')
from wx.lib.delayedresult import startWorker
def _c(d):
dlg.EndModal(0)
def _w():
import time
time.sleep(1.0)
startWorker(_c,_w)
dlg.ShowModal()
dlg.Destroy()
我会使用wx.Timer()
另请参见我的
dlg.Destroy()
问题是它没有退出提示。
我已执行以下操作以退出提示:
def OnCloseWindow(self, e):
dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question',
wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
ret = dial.ShowModal()
if ret == wx.ID_YES:
self.Destroy()
sys.exit(0)
sys.exit(0)
将退出提示并移到下一行。感谢您的回复!我已经试过了,发现对话并没有消失。
def OnCloseWindow(self, e):
dial = wx.MessageDialog(None, 'Are you sure to quit?', 'Question',
wx.YES_NO | wx.NO_DEFAULT | wx.ICON_QUESTION)
ret = dial.ShowModal()
if ret == wx.ID_YES:
self.Destroy()
sys.exit(0)