一、代码

import PySimpleGUI as sg
layout = [[sg.Text(\'任务完成进度\')],
          [sg.ProgressBar(1000, orientation=\'h\', size=(20, 20), key=\'progressbar\')],
          [sg.Cancel()]]

window = sg.Window(\'机器人执行进度\', layout)
progress_bar = window[\'progressbar\']

for i in range(1000):
    event, values = window.read(timeout=10)
    if event == \'Cancel\'  or event is None:
        break
    progress_bar.UpdateBar(i + 1)

window.close()

二、进阶应用

import pandas as pd

path = r"*****"
df = pd.read_excel(path)
layout = [[sg.Text(\'任务完成进度\')],
          [sg.Text(\'\', size=(5, 1), font=(\'Helvetica\', 15), justification=\'center\', key=\'text\')],
          [sg.ProgressBar(len(df), orientation=\'h\', size=(50, 20), key=\'progressbar\')],
          [sg.Cancel()]]
window = sg.Window(\'机器人执行进度\', layout)
progress_bar = window[\'progressbar\']
# For循环
for i in range(0, len(df)):
    print(df.iloc[i])
    time.sleep(1) #假设处理的时间
    event, values = window.read(timeout=10)
    if event == \'Cancel\' or event is None:
        break
    progress_bar.UpdateBar(i + 1)
    window[\'text\'].update(\'{}%\'.format(int(i / len(df) * 100)))
window.close()

三、把进度条装进装饰器

import pandas as pd
from functools import wraps

def Create_progress_bar(df):
    def wrapper(func):
        @wraps(func)
        def inner(*args,**kwargs):
            layout = [[sg.Text(\'任务完成进度\')],
                      [sg.Text(\'\', size=(5, 1), font=(\'Helvetica\', 15), justification=\'center\', key=\'text\')],
                      [sg.ProgressBar(df.shape[0], orientation=\'h\', size=(50, 20), key=\'progressbar\')],
                      [sg.Cancel()]]
            window = sg.Window(\'机器人执行进度\', layout)
            progress_bar = window[\'progressbar\']
            # For循环
            for i in range(0, df.shape[0]):
                func(i,*args,**kwargs)
                event, values = window.read(timeout=10)
                if event == \'Cancel\' or event is None:
                    break
                progress_bar.UpdateBar(i + 1)
                window[\'text\'].update(\'{}%\'.format(int(i / df.shape[0] * 100)))
            window.close()
        return inner
    return wrapper


path = r"*************"
df = pd.read_excel(path)

@Create_progress_bar(df)
def process(i:int): # i是df的行数
    # 处理过程
    print(df.iloc[i,0])
    time.sleep(0.5)

process()

 

版权声明:本文为angelyan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/angelyan/p/12221670.html