如何安全地销毁 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()
def _w():
import time
time.sleep(1.0)
startWorker(_c,_w)
dlg.ShowModal()
这可以做我想做的事情,同时我收到以下错误消息:
(python:15150):Gtk-CRITICAL **:gtk_widget_destroy:断言“GTK_IS_WIDGET(小部件)”失败
如何在不单击对话框按钮的情况下“安全”销毁对话框?
I created a wxPython application which shows some messages on a dialog window. The dialog window is needed to be force-destroyed by the application before I click the dialog OK button. I used wx.lib.delayedresult to make the destroy call.
My code is:
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()
This can do what I desire to do while I got a error message below:
(python:15150): Gtk-CRITICAL **: gtk_widget_destroy: assertion `GTK_IS_WIDGET (widget)' failed
How do I "safely" destroy a dialog without clicking the dialog button?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我已经有一段时间没有使用 wxWidgets 了,但我认为你的 dlg.Destroy() 可能放错了地方。尝试将其移动到主线程中。
It has been a while since I have used wxWidgets but I think your dlg.Destroy() may be in the wrong place. Try moving it into the main thread.
我会使用 wx.Timer()
另请参阅 http ://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/
I would use a wx.Timer()
See also http://www.blog.pythonlibrary.org/2009/08/25/wxpython-using-wx-timers/
我的 dlg.Destroy() 问题是它没有退出提示。
我已执行以下操作来退出提示符:
sys.exit(0)
将退出提示符并移至下一行。My problem with
dlg.Destroy()
is that it is not exiting the prompt.I have done following to exit the prompt:
sys.exit(0)
will exit the prompt and move to next line.