pysimplegui模块实现进度条
一、代码
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 版权协议,转载请附上原文出处链接和本声明。