Python Forum
Need help setting up a PySimpleGUI progress bar that I can maually update in script - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: GUI (https://python-forum.io/forum-10.html)
+--- Thread: Need help setting up a PySimpleGUI progress bar that I can maually update in script (/thread-19000.html)



Need help setting up a PySimpleGUI progress bar that I can maually update in script - Soundtechscott - Jun-10-2019

I am looking for a way to use a PYSimpleGUI progress bar... without a loop
I have looked for several days on the internet with no luck to find an example.

seems everybody does their example with a loop, or on a timer.

I'd like to do something more like a definition that I Can call to to update



I dont know what to change to make it a manually updated item...
I want to be able to tell it i=0 at the beginning of my script
and periodically place update marks thru the script(i=i+4)
so that I can update it as each Major Step in my script is done


This is the PySimpleGUI script, plus some lines showing what I want to do
This currently auto iterates...and I do not know how to change it

I'm just trying to learn and cant find any examples online to do what I want to do.

import PySimpleGUI as sg
import time
from time import sleep

#With this example... It Just auto runs from 0 to completion... this is not what I want to do, but this is teh example the creator gives
def CustomMeter():
 
    layout = [[sg.Text('A custom progress meter')],
              [sg.ProgressBar(1000, orientation='h', size=(20,20), key='progress')],
              [sg.Cancel()]]


    window = sg.Window('Custom Progress Meter').Layout(layout)
    progress_bar = window.FindElement('progress')
  
    for i in range(1000):
       
        event, values = window.Read(timeout=0)
        if event == 'Cancel' or event == None:
            break
       
        progress_bar.UpdateBar(i+1)
    
    window.Close()

prog()



time.sleep(2)
#______________________________________________________________

#I'd like to be able to do this

#i=0 at this point
prog()
#do Scripty Stuff

#Update Progress Bar Manually
#i=4 at this point

#do more scriptic writings

#Update Progress bar Manually
#i=8 at this point

#and so forth and so on until I reach 100



RE: Need help setting up a PySimpleGUI progress bar that I can maually update in script - Soundtechscott - Jun-10-2019

Figured it out

just leave everything as a single line, not a definition

heres an example to help others

#this Script will create a Progress Bar
#The Progress will be Manually Updated using the format listed below
#progress_bar.UpdateBar(Value of Bar, Maximum Bar Value)
#the Window uses a .Finalize Function to make the window Persistent

#Import the PySimpleGUI Library
import PySimpleGUI as sg
#Import the Time Library for use in this script
import time

#this is for the Layout Design of the Window
layout = [[sg.Text('Custom Text')],
              [sg.ProgressBar(1, orientation='h', size=(20, 20), key='progress')],
          ]
#This Creates the Physical Window
window = sg.Window('Window Title', layout).Finalize()
progress_bar = window.FindElement('progress')

#This Updates the Window
#progress_bar.UpdateBar(Current Value to show, Maximum Value to show)
progress_bar.UpdateBar(0, 5)
#adding time.sleep(length in Seconds) has been used to Simulate adding your script in between Bar Updates
time.sleep(.5)

progress_bar.UpdateBar(1, 5)
time.sleep(.5)

progress_bar.UpdateBar(2, 5)
time.sleep(.5)

progress_bar.UpdateBar(3, 5)
time.sleep(.5)

progress_bar.UpdateBar(4, 5)
time.sleep(.5)

progress_bar.UpdateBar(5, 5)
time.sleep(.5)
#I paused for 3 seconds at the end to give you time to see it has completed before closing the window
time.sleep(3)

#This will Close The Window
window.Close()

#Thanks for Using PySimpleGUI