wxpython下载进度条

wxpython下载进度条,wxpython,multiprocessing,Wxpython,Multiprocessing,是用于在wx中下载urlretrieve的progressbar的代码。我在另一个过程中进行下载工作。它可以工作,但有点迟钝和没有反应。我不能自由地移动窗户。有什么问题吗?我猜这是因为你称之为: self.dloader.parent_conn.recv() 这可能是一个长时间运行的过程,因此它会阻止wxPython的主循环,从而使UI无响应。典型的解决方法是从进程或线程向UI发送一条消息,告诉它进行更新。您可能需要使用wxPython的线程安全方法之一才能确保安全: wx.CallAfte

是用于在wx中下载urlretrieve的progressbar的代码。我在另一个过程中进行下载工作。它可以工作,但有点迟钝和没有反应。我不能自由地移动窗户。有什么问题吗?

我猜这是因为你称之为:

self.dloader.parent_conn.recv()
这可能是一个长时间运行的过程,因此它会阻止wxPython的主循环,从而使UI无响应。典型的解决方法是从进程或线程向UI发送一条消息,告诉它进行更新。您可能需要使用wxPython的线程安全方法之一才能确保安全:

  • wx.CallAfter
  • wx.CallLater
  • wx.PostEvent
有关此主题的规范文章可在wxPython wiki中找到:

还有一个关于多处理的wiki页面,您可能会发现它很有用:


我通常被告知不要使用线程或进程。人们总是告诉我twister和事件驱动编程(注册回调等)线程和进程是调试的难点,在不同的平台上可能有不同的行为。