应用进度条简单实现
回答
收藏

应用进度条简单实现

多金
2023-07-27 21:01·浏览量:1022
多金
发布于 2023-07-27 13:42更新于 2023-07-27 21:011022浏览


1.效果展示:


2.代码实现

import tkinter as tk
from tkinter import ttk,Tk, Label, Scrollbar, Text, VERTICAL
import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import datetime
import threading
class RPA:
    static_var = None
    thread = None
    def __init__(self):
        self.window = None
        self.progress_bar = None
        self.counter_value = 0
        self.text = None
        self.label = None
        

    def create_counter_window(self):
        self.window = tk.Tk()
        self.window.title("当前进度")
        self.window.geometry("300x200")
        self.progress_bar = ttk.Progressbar(self.window, orient='horizontal', length=200, mode='determinate')
        
     
        self.progress_bar.pack(pady=20)
        self.label = tk.Label( self.window, text="当前进度:0")
        self.label.pack()
        # 创建滚动条
        scrollbar = Scrollbar(self.window, orient=VERTICAL)
        scrollbar.pack(side='right', fill='y')

        # 创建文本框,并将滚动条绑定到文本框上
        self.text = Text(self.window, yscrollcommand=scrollbar.set)
        self.text.pack(fill='both', expand=True)

        # 设置滚动条与文本框的联动
        scrollbar.config(command=self.text.yview)

    def update_value(self, progress_value,mesage):
        self.counter_value = progress_value
        self.progress_bar["value"] = self.counter_value  # 更新进度条的值
        current_time = datetime.datetime.now()
        # Format the time as "yyyy-mm-dd hh:mm:ss"
        formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S")
        self.text.insert('end', f"\n")
        self.text.insert('end', f"---------{formatted_time}----------",'center')
        self.text.tag_configure('center', justify='center')
        self.text.insert('end', f"当前进度:{mesage}")
        self.label.config(text=f"当前进度:{progress_value}%")
        self.text.see("end")



        self.window.update()  # 刷新窗口

    def start(self,progress_value,mesage):
        self.create_counter_window()
        self.update_value(progress_value,mesage)
        self.window.mainloop()
def long_running_task(progress_bar,progress_value,mesage):
    progress_bar.start(progress_value,mesage)
def main(progress_value,mesage):
    if RPA.static_var == None:
        rpa = RPA()
        RPA.static_var = rpa
        # progress_value = 35
        # mesage = "表格下载完成"
        RPA.thread = threading.Thread(target=long_running_task, args=(RPA.static_var,progress_value,mesage))
        RPA.thread.setDaemon(True)
        RPA.thread.start()
    else:
        
        RPA.static_var.update_value(progress_value,mesage)
       



3.使用方式:

1.新建模块-我这里定义的模块名称是simple

2.将以上代码粘贴到进来即可

3.在流程中随处都可以调用该模块,传入两个参数,当前进度值和要显示的信息,窗口会实时更新进度。

*注意:进度条窗口会随应用的结束而结束,测试的话可以再程序最后加个等待指令

收藏1
全部回答1
最新
发布回答
回答