Python 更新wx.Gauge并保持当前帧处于活动状态?

Python 更新wx.Gauge并保持当前帧处于活动状态?,python,multithreading,wxpython,Python,Multithreading,Wxpython,我正在编写一个使用python和wxpython从网站下载文件的小工具。 我已经让一切正常工作了,唯一困扰我的是我想用一个进度条来显示完成,在urlretrieve之后,唯一移动的是进度条,GUI只是变得没有响应。我知道这与线程有关,但我在这方面是个新手。有人能给我一个提示吗 这个想法是在主框架中,我从一个站点获取搜索结果,并将结果提供给这个下载列表框架,然后动态生成按钮和静态文本。问题是在单击下载按钮后,progressbar会更新为正在下载的文件,但除此之外,整个应用程序都会挂起。在阅读了其

我正在编写一个使用python和wxpython从网站下载文件的小工具。 我已经让一切正常工作了,唯一困扰我的是我想用一个进度条来显示完成,在urlretrieve之后,唯一移动的是进度条,GUI只是变得没有响应。我知道这与线程有关,但我在这方面是个新手。有人能给我一个提示吗

这个想法是在主框架中,我从一个站点获取搜索结果,并将结果提供给这个下载列表框架,然后动态生成按钮和静态文本。问题是在单击下载按钮后,progressbar会更新为正在下载的文件,但除此之外,整个应用程序都会挂起。在阅读了其他示例中的其他人的代码后,我认为我将doDownload函数放在了一个线程中并执行了它,它的行为与不使用线程相同

提前谢谢

类下载列表框架(wx.Frame):


运行该命令时:

thread = threading.Thread(target=self.doDownloade(realAddress, saveAsFilename))
它首先运行self.doDownloade(realAddress,saveAsFilename),然后将其返回值(将是
None
)作为目标传递

相反,您希望:

thread = threading.Thread(target=self.doDownloade, args=(realAddress, saveAsFilename))
注意,在这里,我已经传入了函数
self.doDownloade
,然后
线程
将使用调用
线程.start时提供的AGR调用此函数


顺便说一下,您也可以使用
wx.Timer
来完成此操作。我通常认为这是一个更好的工具,因为它更容易,你可以控制多久仪表更新,因此多少资源用于仪表。wxPython演示的主要仪表示例使用wx。计时器是您想要一个好的起点。

太好了。另请参见最后关于使用wx.Timer的新说明。
thread = threading.Thread(target=self.doDownloade, args=(realAddress, saveAsFilename))