考虑以下问题:我有一个 gtk / tk 应用程序,它在列表(商店)中显示来自网站的内容。我想按顺序做以下事情:
- 显示窗口并开始下载
- 显示进度条
- 下载完成后将数据添加到列表中(存储)
这是条件:用户必须能够在下载时与应用程序交互。这意味着程序在整个下载过程中都在窗口的主循环中。
什么不起作用:
- urllib.urlopen() 等待整个下载完成
- Popen() 不允许在两个线程之间进行我想要的通信
如何通知程序下载完成是最大的问题
由于 Tk/Gtk 无论如何我都是事件驱动的,我不妨使用信号
我首选的解决方法是注册一个附加信号“dl_done”,并在下载完成后将该信号发送到 gtk。这甚至可能吗?任何建议都非常感谢!