我不认为你可以用 MessageBox 做到这一点,但是使用 ProgressDialog 呢?我更新了代码并测试了它:
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import wx
print(wx.VERSION_STRING)
import wx.lib.sized_controls as sc
class abc(sc.SizedFrame):
def __init__(self, parent, id):
super(abc, self).__init__(parent, id, 'Frame aka window')
cpane = self.GetContentsPane()
button1 = wx.Button(cpane, label="ProgressDialog 1 sample")
button1.Bind(wx.EVT_BUTTON, self.pdlg1)
button1 = wx.Button(cpane, label="ProgressDialog 2 sample")
button1.Bind(wx.EVT_BUTTON, self.pdlg2)
def pdlg1(self, evt):
dlgPro = wx.ProgressDialog(u"Simulation progress 1",
u"It is starting",
3,
None,
wx.PD_AUTO_HIDE | wx.PD_APP_MODAL)
# do something
dlgPro.Update(1, u"first one is done")
# do something
wx.Yield()
wx.Sleep(1)
dlgPro.Update(2, u"second one is done")
# do something
wx.Yield()
wx.Sleep(1)
dlgPro.Update(3, u"we are finished")
def pdlg2(self, evt):
dlgPro = wx.ProgressDialog(u"Simulation progress 2",
u"It is starting",
-1,
None,
wx.PD_AUTO_HIDE | wx.PD_APP_MODAL)
# do something
dlgPro.Pulse(u"first one is done")
# do something
wx.Yield()
wx.Sleep(1)
dlgPro.Pulse(u"second one is done")
# do something
wx.Yield()
wx.Sleep(1)
dlgPro.Pulse(u"we are finished")
if __name__ == '__main__':
app = wx.App()
frame = abc(None, -1)
frame.Show()
app.MainLoop()
http://wxpython.org/Phoenix/docs/html/ProgressDialog.html?highlight=progress