python --进度条(tk下载进度条)

该博客展示了如何在Windows环境下利用Tkinter库创建一个简单的进度条,用于显示文件下载的进度。通过多线程技术,实现下载操作与界面更新的并行,提供了两种不同的进度条实现方式:一种是基于Tkinter的ttk.Progressbar,另一种是控制台输出的进度条。代码中还包含了一个带有下载时间的进度条展示例子。
摘要由CSDN通过智能技术生成

windows下tk下载进度条

import threading
import multiprocessing
import requests
import tkinter as tk
from tkinter import ttk



class JinDuTiao(object):
    '''进度条'''

    def __init__(self):
        self.root = tk.Tk()
        self.root.overrideredirect(True)  # 去掉窗口边框

        # 获取屏幕宽度和高度
        screen_width = self.root.winfo_screenwidth()
        screen_height = self.root.winfo_screenheight()

        # 设置窗口大小和位置
        window_width = 300
        window_height = 45
        x = (screen_width - window_width) // 2
        y = (screen_height - window_height) // 2
        self.root.geometry(f"{window_width}x{window_height}+{x}+{y}")  # 设置窗口剧中

        self.progress_bar = ttk.Progressbar(self.root, orient='horizontal', length=300, mode='determinate')
        self.progress_bar.pack()

        self.percentage_label = tk.Label(self.root, text="")
        self.percentage_label.pack()

    def download_file(self, url, save_path):
        response = requests.get(url, stream=True)
        total_size = 28740241

        with open(save_path, 'wb') as file:
            self.progress_bar['maximum'] = total_size
            downloaded = 0

            for data in response.iter_content(chunk_size=1024):
                file.write(data)
                downloaded += len(data)
                self.progress_bar['value'] = downloaded
                percentage = (downloaded / total_size) * 100
                self.percentage_label.config(text=f"edg最新最资源包下载进度:{percentage:.2f}%")
                self.root.update_idletasks()
        self.root.destroy()

    def start(self):
        url = "http://118.178.137.66/static/106.zip"  # 下载地址
        save_path = "106.zip"  # 下载后保存文件名

        # 创建一个新线程来执行文件下载操作
        download_thread = threading.Thread(target=self.download_file, args=(url, save_path))
        download_thread.start()
        self.root.mainloop()

if __name__ == '__main__':
    a = JinDuTiao()
    a.start()

一:

import time
import random


def progress_bar():
    for i in range(1, 300):
        print("Download progress: {}%: ".format(i), "▋" * (i // 2), f'{i}/100')
        time.sleep(random.random())


if __name__ == '__main__':
    progress_bar()

二:

import sys
import time
 
 
def progress_bar():
  for i in range(1, 101):
    print("\r", end="")
    print("Download progress: {}%: ".format(i), "▋" * (i // 2), end="")
    sys.stdout.flush()
    time.sleep(0.05)
 
if __name__ == '__main__':
  progress_bar()

三(带时间):

import time

scale = 50
print("执行开始,祈祷不报错".center(scale // 2,"-"))
start = time.perf_counter()
for i in range(scale + 1):
  a = "*" * i
  b = "." * (scale - i)
  c = (i / scale) * 100
  dur = time.perf_counter() - start
  print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end = "")
  time.sleep(0.1)
 
print("\n"+"执行结束,万幸".center(scale // 2,"-"))
Python中,使用Tkinter库可以非常简单地设置进度条。首先,我们需要导入Tkinter库,并创建一个主窗口。然后,我们可以使用Tkinter库中的ProgressBar或Scale控件来创建进度条。 例如,我们可以使用Scale控件来创建一个水平的进度条,代码如下: ```python import tkinter as tk def update_progress(): progress['value'] += 10 root = tk.Tk() root.title('进度条示例') progress = tk.Scale(root, from_=0, to=100, orient=tk.HORIZONTAL, length=200) progress.pack() btn = tk.Button(root, text='更新进度', command=update_progress) btn.pack() root.mainloop() ``` 在这个例子中,我们创建了一个主窗口,然后使用Scale控件创建了一个水平的进度条,取值范围为0至100。然后创建了一个按钮,当用户点击按钮时,调用update_progress函数来更新进度条的值。 另外,我们也可以使用ProgressBar控件来创建一个进度条,代码如下: ```python import tkinter as tk from tkinter import ttk def update_progress(): progress['value'] += 10 root = tk.Tk() root.title('进度条示例') progress = ttk.Progressbar(root, orient=tk.HORIZONTAL, length=200, mode='determinate') progress.pack() btn = tk.Button(root, text='更新进度', command=update_progress) btn.pack() root.mainloop() ``` 在这个例子中,我们使用ttk.Progressbar()创建了一个水平的进度条,然后同样创建了一个按钮,当用户点击按钮时,调用update_progress函数来更新进度条的值。无论是使用Scale控件还是ProgressBar控件,都能够非常方便地在Python中设置进度条
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像风一样的男人@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值