Python 破坏时强制关闭对话框

Python 破坏时强制关闭对话框,python,python-2.7,wxpython,Python,Python 2.7,Wxpython,环境:我正在使用wxPython Phoenix 3.0.3和Python 2.7.10 情况:我有一个简单的ProgressDialog,可以正常工作,只是完成后不会自动关闭。对话框中有一个关闭按钮,该按钮在进度完成之前处于禁用状态。此时,对话框将等待用户单击关闭按钮 问题:我想自动关闭它(无需等待用户操作) 我所尝试的:调用Close()和Destroy()无效。我使用了Yield()来确保所有事件都得到了处理,并尝试了不同时间段的休眠,以确保所有堆叠的事件都得到了处理 参数:我不想使用线程

环境:我正在使用wxPython Phoenix 3.0.3和Python 2.7.10

情况:我有一个简单的ProgressDialog,可以正常工作,只是完成后不会自动关闭。对话框中有一个关闭按钮,该按钮在进度完成之前处于禁用状态。此时,对话框将等待用户单击关闭按钮

问题:我想自动关闭它(无需等待用户操作)

我所尝试的:调用
Close()
Destroy()
无效。我使用了
Yield()
来确保所有事件都得到了处理,并尝试了不同时间段的休眠,以确保所有堆叠的事件都得到了处理

参数:我不想使用线程,这个问题太简单了,我不认为这是问题所在(但是如果使用线程提供了一个简单的解决方案,那就这样吧)

最小工作示例(MWE):

# max progress for progress dialog
max_progress = len(unparsed_files)
progress_dlg = wx.ProgressDialog("Parsing", 'Processing...', max_progress, self, 
                                 style=wx.PD_ELAPSED_TIME)

# parse files
for i, uf in enumerate(unparsed_files):
    wx.Yield()
    progress_dlg.Update(i, 'Processing {}'.format(uf))
    self.parse(uf)

progress_dlg.Update(max_progress, 'Parsing completed')
progress_dlg.Destroy()
wx.Yield()
替代解决方案:一个没有按钮的模式对话框,不需要任何用户操作,可以有一个
wx.Gauge
,可以更新,然后销毁对话框


如何在不等待用户单击关闭按钮的情况下关闭并销毁ProgressDialog(或使用没有关闭按钮的备用对话框)?

您应该在样式参数中添加
wx.PD\u AUTO\u HIDE
标志

来自wxpython(重点是我的):

使进度对话框在达到进度表的最大值后立即从屏幕上消失如果此样式不存在,则一旦达到最大值,对话框将变为模式对话框,等待用户将其关闭


谢谢啊!应该是RTFM。