tkinter实现下载进度条
时间: 2023-08-15 16:09:19 浏览: 100
在python tkinter中Canvas实现进度条显示的方法
要在Tkinter中实现下载进度条,你需要使用Tkinter的`Progressbar`部件和Python的`requests`模块来下载文件。以下是一个简单的例子,演示如何在Tkinter中创建和更新进度条,并使用`requests`模块下载文件:
```python
import tkinter as tk
from tkinter import ttk
import requests
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.pack()
self.create_widgets()
def create_widgets(self):
self.progress = ttk.Progressbar(self, orient="horizontal", length=200, mode="determinate")
self.progress.pack(pady=10)
self.start_button = tk.Button(self, text="Download", command=self.download)
self.start_button.pack()
def download(self):
url = "https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US"
response = requests.get(url, stream=True)
total_size = int(response.headers.get('content-length', 0))
block_size = 1024 # 1 Kibibyte
self.progress["maximum"] = total_size // block_size
with open("firefox.tar.bz2", "wb") as file:
for data in response.iter_content(block_size):
file.write(data)
self.progress["value"] += 1
self.update() # 更新进度条
root = tk.Tk()
app = Application(master=root)
app.mainloop()
```
在这个例子中,我们创建了一个`Progressbar`对象和一个“下载”按钮。当用户点击“下载”按钮时,我们使用`requests`模块下载一个文件,并更新进度条。请注意,我们使用`stream=True`参数来确保我们只下载文件的一部分,而不是整个文件。我们还使用`content-length`头来获取文件的总大小,以便我们可以正确设置进度条的最大值。在下载文件的循环中,我们将数据写入文件并更新进度条的值。
阅读全文