我编写了一个用于下载文件的 Python/QT 应用程序。如何才能阻止它在几秒钟后“变灰”?

我编写了一个用于下载文件的 Python/QT 应用程序。如何才能阻止它在几秒钟后“变灰”?

以下是要点。应用程序仍在运行,进度条仍会移动,但窗口会变灰,如果我单击 X 关闭它,会弹出一个窗口并显示“窗口 X 没有响应,强制退出吗?”如果我强制退出,窗口会关闭,但我从终端运行它时可以看到应用程序仍在运行。我使用的是 QT 4。

答案1

问题很可能是,当您的下载功能正在运行时,您的应用程序无法响应事件 - 控制权不会返回到主循环。

我认为最简单的机制是在单独的线程中进行下载,并使用 Qt 的信号和槽机制来更新进度条(线程不能直接与用户界面交互)。

此外,与打开文件来写出 HTTP 响应相比,您可能会发现使用如下函数更有效urllib.urlretrieve直接写入文件。

答案2

听起来窗口没有被销毁。这是应用程序的主窗口还是某种对话框?

如果它是一个对话框,请确保在调用窗口对象之后、下一行或者在获取窗口的返回值之后调用“window_object.destroy()”。

如果它是您的主窗口,您可能想要修改 X 按钮的回调方法,用某种方法来销毁您的窗口,也许是 self.destroy()?

相关内容