我有一个快速连续显示多个进度条的程序。它在wxPython 2.8.12.1中工作正常,但在更新到3.0.2.0之后我注意到进度条都会延迟,直到事件处理程序完成。以下代码重现了该问题:
import wx
import time
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
button = wx.Button(self, -1, 'Test')
self.Bind(wx.EVT_BUTTON, self._onTestClick, button)
def _onTestClick(self, event):
for i in range(5):
dlg = wx.ProgressDialog('Progress', 'Testing...', 100, self)
for j in range(100):
time.sleep(0.01)
dlg.Update(j)
dlg.Destroy()
event.Skip()
if __name__ == '__main__':
app = wx.App(0)
frame = MyFrame()
frame.Show()
app.MainLoop()
我尝试在Destroy()调用之后添加wx.Yield(),但这没有帮助。有谁知道我怎么能让旧的对话框更快消失?
答案 0 :(得分:0)
差异可能是由于默认情况下MSW端口切换到本机进度对话框,以及本机对话框不是真正的wx.Dialog
而只是围绕本机API函数调用的事实。您可以使用composer update
来获取真正的composer.json
版本,该版本应具有与对象销毁相关的旧行为。