Wxpython 静态文本出现得太晚

Wxpython 静态文本出现得太晚,wxpython,Wxpython,我有一个脚本,它将复制一个大文件(>100MB)。此复制需要约2秒钟,因此我希望在复制开始前显示一个文本(“开始”),在复制完成时显示另一个文本(“结束”)。这是我的代码: def copy(self,event): wx.StaticText(self.startpanel, -1, 'start', (80,110)) if not(os.path.exists(path2)): os.mkdir(path2) shutil.copy(path1+'/

我有一个脚本,它将复制一个大文件(>100MB)。此复制需要约2秒钟,因此我希望在复制开始前显示一个文本(“开始”),在复制完成时显示另一个文本(“结束”)。这是我的代码:

def copy(self,event):
    wx.StaticText(self.startpanel, -1, 'start', (80,110))
    if not(os.path.exists(path2)):
        os.mkdir(path2)
    shutil.copy(path1+'/test.zip',path2+'/test.zip')
    wx.StaticText(self.startpanel, -1, 'end', (80,150))
问题:当调用事件复制时,我的面板上2秒钟内没有显示任何内容,在这2秒钟后(复制完成时),两个静态文本同时出现!
为什么在复制zip文件之前,我的第一个StaticText没有出现?我如何解决这个问题?

事件处理程序中长时间运行的任务正在阻塞GUI线程。您应该使用多线程。见说明。图书馆也很有用


因此,基本上我的解决方案是:将标签设置为“开始”,并使用
wx.lib.delayedresult
启动工作线程。工作线程应该复制该文件。当它完成时,将调用consumer函数。在使用者函数中将标签设置为“end”。

事件处理程序中长时间运行的任务阻塞了GUI线程。您应该使用多线程。见说明。图书馆也很有用


因此,基本上我的解决方案是:将标签设置为“开始”,并使用
wx.lib.delayedresult
启动工作线程。工作线程应该复制该文件。当它完成时,将调用consumer函数。您在消费者功能中将标签设置为“结束”。

谢谢,这对我很有帮助!谢谢,这对我有帮助!