urllib.url检索仅当Mac上的Tkinter窗口上没有活动时停止下载

2024-06-25 22:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Tkinter GUI窗口制作一个文件下载程序,该窗口将使用以下行下载文件:

 urllib.urlretrieve(url = fileurl, filename = file, reporthook = progBar)

Progbar是我的Tkinter GUI窗口上的一个进度条。当我在Windows上运行我的代码时,下载工作正常,运行正常,进度条也一样。在

但是,当我在Mac上运行相同的代码时,只有在Tkinter GUI窗口中有活动时,下载和进度条才会运行。例如,如果窗口在后台,则下载将暂停,直到单击该窗口。即使这样,当Tkinter GUI窗口不在后台时,只有当我在屏幕上移动鼠标或反复按下键盘上的按钮时,下载才会进行,否则下载会再次暂停。它似乎是出于某种原因超时了,我不知道如何解决这个问题,也不知道为什么它只发生在Mac而不是windows上。在

如果我在progBar方法中放入print语句,下载速度也会减慢。在

我还尝试从调用中删除reporthook参数urllib.url检索,当我这样做时,下载进展顺利。在

我的progBar方法如下:

^{pr2}$

如果这有帮助的话,我将使用python2.7。在

编辑:有关更多信息,请下载(调用urllib.url检索)在后台线程中执行,而GUI窗口是主线程。这可能与问题有关。在


Tags: 文件方法代码进度条程序urltkintermac
1条回答
网友
1楼 · 发布于 2024-06-25 22:46:05

这只是一个猜测,但是reporthook中的UI输出命令可能挂起,因为当程序处于后台时,事件循环(我猜)暂停了。我对Tkinter UI模型有模糊的记忆,但一个解决方案可能是在钩子中设置一些全局变量,并让UI单独绘制——不要在钩子中发出UI命令。在

相关问题 更多 >