

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)
1.新建模块-我这里定义的模块名称是simple
2.将以上代码粘贴到进来即可

3.在流程中随处都可以调用该模块,传入两个参数,当前进度值和要显示的信息,窗口会实时更新进度。
*注意:进度条窗口会随应用的结束而结束,测试的话可以再程序最后加个等待指令
