多个wxProgressDialog实例在3.0.2.0中重叠

时间:2017-10-17 15:58:04

标签: python wxpython

我有一个快速连续显示多个进度条的程序。它在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(),但这没有帮助。有谁知道我怎么能让旧的对话框更快消失?

1 个答案:

答案 0 :(得分:0)

差异可能是由于默认情况下MSW端口切换到本机进度对话框,以及本机对话框不是真正的wx.Dialog而只是围绕本机API函数调用的事实。您可以使用composer update来获取真正的composer.json版本,该版本应具有与对象销毁相关的旧行为。