from wxPython import wx
import time

class ProgressDialogTester(wx.wxPanel):
    
    def __init__(self, parent, id):
        wx.wxPanel.__init__(self, parent, id)
        wx.EVT_LEFT_DOWN(self, self.show_progress)
        
    def show_progress(self, event=None):
        progress = wx.wxProgressDialog("PROGRESS", "", parent=self)
        progress.Show(1)
        for i in range(100):
            time.sleep(.05)
            progress.Update(i)
        progress.Show(0) # If you comment out this line, the change of focus does not happen.
        progress.Destroy()

if __name__ == "__main__":
    app = wx.wxPySimpleApp()
    frame = wx.wxFrame(wx.NULL, -1, "Frame", wx.wxDefaultPosition)
    frame.Show(1)
    plot = ProgressDialogTester(frame, -1)
    plot.SetSize(frame.GetClientSize())
    app.MainLoop()