您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 |

自学教程:Tkinter使用Progressbar创建和管理进度条的操作代码

51自学网 2023-07-22 10:36:09
  python
这篇教程Tkinter使用Progressbar创建和管理进度条的操作代码写得很实用,希望能帮到您。

前言

Progressbar是Tkinter库中的一个小部件,用于创建和管理进度条。它可以在图形用户界面中显示任务的进度,并提供了多种样式和配置选项。

使用Progressbar,你可以按照固定或不确定的进度展示任务的进行状态。它可以显示任务完成的百分比,或者在不确定的情况下,显示一个动画效果表示任务正在进行。

以下是一些Progressbar的重要属性和方法:

  • length:指定进度条的长度。
  • mode:指定进度条的模式,可以是"determinate"(确定模式)或"indeterminate"(不确定模式)。
  • maximum:设置进度条的最大值,默认为100。
  • value:设置进度条的当前值。
  • start():启动进度条的动画效果,仅在不确定模式下有效。
  • stop():停止进度条的动画效果,仅在不确定模式下有效。

通过使用这些属性和方法,你可以创建一个自定义的进度条并根据需要进行更新和控制。

一、indeterminate 模式

在这个模式下指针左右移动,主要目的是要让用户知道程序还在运行

import tkinter as tkfrom tkinter.ttk import Progressbarclass Simulate_Waiting_State:    def __init__(self):        self.root = tk.Tk()        self.root.title('进度条下载演示')        self.root.geometry("300x150+1100+150")        self.interface()    def interface(self):        # 创建进度条        self.progress_bar = Progressbar(self.root, length=200, mode="indeterminate")        # 创建按钮        self.start_button = tk.Button(self.root, text="开始", command=self.start_progress)        self.stop_button = tk.Button(self.root, text="停止", command=self.stop_progress)        # 将进度条和按钮放置在窗口中        self.progress_bar.grid(row=0, column=1, pady=20, padx=50, columnspan=100)        self.start_button.grid(row=1, column=1, padx=75)        self.stop_button.grid(row=1, column=3)    def start_progress(self):        self.progress_bar.start()    def stop_progress(self):        self.progress_bar.stop()if __name__ == '__main__':    run = Simulate_Waiting_State()    run.root.mainloop()import tkinter as tkfrom tkinter.ttk import Progressbarclass Simulate_Waiting_State:    def __init__(self):        self.root = tk.Tk()        self.root.title('进度条下载演示')        self.root.geometry("300x150+1100+150")        self.interface()    def interface(self):        # 创建进度条        self.progress_bar = Progressbar(self.root, length=200, mode="indeterminate")        # 创建按钮        self.start_button = tk.Button(self.root, text="开始", command=self.start_progress)        self.stop_button = tk.Button(self.root, text="停止", command=self.stop_progress)        # 将进度条和按钮放置在窗口中        self.progress_bar.grid(row=0, column=1, pady=20, padx=50, columnspan=100)        self.start_button.grid(row=1, column=1, padx=75)        self.stop_button.grid(row=1, column=3)    def start_progress(self):        self.progress_bar.start()    def stop_progress(self):        self.progress_bar.stop()if __name__ == '__main__':    run = Simulate_Waiting_State()    run.root.mainloop()

请添加图片描述

二、determinate模式

1、模拟下载进度

import tkinter as tkfrom tkinter.ttk import Progressbarimport threadingimport timeclass Download_Files:    def __init__(self):        self.root = tk.Tk()        self.root.title('进度条下载演示')        self.root.geometry("300x150+1100+150")        self.interface()    def interface(self):        # 创建进度条        self.progress_bar = Progressbar(self.root, length=200, mode="determinate")        # 创建按钮        self.start_button = tk.Button(self.root, text="开始下载", command=self.download)        # 将进度条和按钮放置在窗口中        self.progress_bar.grid(row=0, pady=20, padx=50)        self.start_button.grid(row=1, padx=50)        # 进度值最大值        self.progress_bar['maximum'] = 100    def download(self):        """进度条模拟显示下载进度"""        # 进度值初始值        initial_value = 0        while initial_value < 100:            initial_value += 1            # 更新进度条的值            self.progress_bar['value'] = initial_value            self.root.update()            # 模拟等待时间时间            time.sleep(0.1)    def thread_management(self):        """启用子线程下载文件"""        T1 = threading.Thread(target=self.download, daemon=True)        T1.start()if __name__ == '__main__':    run = Download_Files()    run.root.mainloop()

2、真实下载进度

import tkinter as tkfrom tkinter.ttk import Progressbarfrom tkinter import messageboximport threadingimport requestsclass Download_Files:    def __init__(self):        self.root = tk.Tk()        self.root.title('进度条下载演示')        self.root.geometry("300x150+850+350")        self.interface()    def interface(self):        # 创建进度条        self.progress_bar = Progressbar(self.root, length=200, mode="determinate")        # 创建按钮        self.start_button = tk.Button(self.root, text="开始下载", command=self.thread_group)        # 将进度条和按钮放置在窗口中        self.progress_bar.grid(row=0, pady=20, padx=50)        self.start_button.grid(row=1, padx=50)    def download(self):        # 禁用按钮        self.start_button.config(state=tk.DISABLED)        # 下载地址        url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'        file_data = requests.get(url, stream=True)        # 获取文件大小,单位字节(B)        if "content-length" in file_data.headers:            maxbyte = int(file_data.headers["content-length"])        # 截取文件名称        filename = url.split("/")[-1]        with open(filename, "wb") as f:            downloaded_bytes = 0            for chunk in file_data.iter_content(chunk_size=1024):                if chunk:                    f.write(chunk)                    downloaded_bytes += len(chunk)                    # 更新进度条的值                    # 将已下载的字节数除以文件总大小(maxbyte),然后乘以100,得到已下载的数据量相对于文件总大小的百分比                    self.progress_bar['value'] = downloaded_bytes / maxbyte * 100                    self.root.update()        # 弹窗提示下载完成        messagebox.showinfo("下载提示", "文件下载完成!")        # 恢复按钮的可点击状态        self.start_button.config(state=tk.NORMAL)        # 下载完成后重置进度条的值        self.progress_bar['value'] = 0    def thread_group(self):        """启用子线程下载"""        T1 = threading.Thread(name='download', target=self.download, daemon=True)        T1.start()if __name__ == '__main__':    run = Download_Files()    run.root.mainloop()

请添加图片描述

到此这篇关于Tkinter使用Progressbar创建和管理进度条的文章就介绍到这了,更多相关Tkinter Progressbar进度条内容请搜索wanshiok.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持wanshiok.com!


Python搭建监控平台的实现示例
Python中实现定时任务详解
51自学网自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1