【发布时间】:2017-06-23 12:26:13
【问题描述】:
我正在尝试制作一个 GUI,用户单击一个按钮,应用程序从互联网下载一个文件。我想要一个进度条显示文件下载完成的时间。为了实现这一点,我实现了一个线程来在单击下载按钮时运行进度条的功能。这是我正在使用的代码:
def progthread():
threading.Thread(target=download).start()
def download():
blocknum = 0
blocksize = 0
url = "https://www.python.org/static/img/python-logo.png"
filename = "C:\My Python Apps\MyFile.png"
response = requests.get(url, stream=True)
total_length = response.headers.get('content-length')
with open(filename, "wb") as f:
for data in response.iter_content(chunk_size=10000):
f.write(data)
percent = int(blocknum * blocksize / int(total_length))
progress['value'] = percent
当我运行应用程序时,它会下载文件并且不会出现错误。但是进度条没有做任何事情。我尝试使用progress.update() 和progress.update_idletask(),但进度条仍然无法正常工作。
如何让进度条显示文件的下载进度?
【问题讨论】:
-
你没有在循环中给blocknum和blocksize赋值,所以它们总是停留在0。
标签: multithreading python-3.x tkinter progress-bar download