99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
 | 
						|
# Modified file based upon John Finlay's PyGTK 2.0 Tutorial
 | 
						|
# http://www.pygtk.org/pygtk2tutorial/sec-ProgressBars.html
 | 
						|
 | 
						|
import pygtk
 | 
						|
pygtk.require('2.0')
 | 
						|
import gtk, gobject
 | 
						|
 | 
						|
# Update the value of the progress bar so that we get
 | 
						|
# some movement
 | 
						|
def progress_timeout(pbobj):
 | 
						|
    # Calculate the value of the progress bar using the
 | 
						|
    # value range set in the adjustment object
 | 
						|
    new_val = pbobj.pbar.get_fraction() + 0.10
 | 
						|
 | 
						|
    if new_val > 1.0:
 | 
						|
        return False
 | 
						|
 | 
						|
    # Set the new value
 | 
						|
    pbobj.pbar.set_fraction(new_val)
 | 
						|
 | 
						|
    # As this is a timeout function, return TRUE so that it
 | 
						|
    # continues to get called until we reach 1.0
 | 
						|
    return True
 | 
						|
 | 
						|
class ProgressBar:
 | 
						|
    # start the progress bar
 | 
						|
    def start_progress(self, widget, data=None):
 | 
						|
        # Add a timer callback to update the value of the progress bar
 | 
						|
        try:
 | 
						|
            gobject.source_remove(self.timer)
 | 
						|
        except:
 | 
						|
            pass
 | 
						|
        self.pbar.set_fraction(0.0)
 | 
						|
        self.timer = 0
 | 
						|
        self.timer = gobject.timeout_add (500, progress_timeout, self)
 | 
						|
 
 | 
						|
    # Clean up allocated memory and remove the timer
 | 
						|
    def destroy_progress(self, widget, data=None):
 | 
						|
        try:
 | 
						|
            gobject.source_remove(self.timer)
 | 
						|
        except:
 | 
						|
            pass
 | 
						|
        self.timer = 0
 | 
						|
        gtk.main_quit()
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
 | 
						|
        self.window.set_resizable(True)
 | 
						|
 | 
						|
        self.window.connect("destroy", self.destroy_progress)
 | 
						|
        self.window.set_title("ProgressBar")
 | 
						|
        self.window.set_border_width(0)
 | 
						|
 | 
						|
        vbox = gtk.VBox(False, 5)
 | 
						|
        vbox.set_border_width(10)
 | 
						|
        self.window.add(vbox)
 | 
						|
        vbox.show()
 | 
						|
  
 | 
						|
        # Create a centering alignment object
 | 
						|
        align = gtk.Alignment(0.5, 0.5, 0, 0)
 | 
						|
        vbox.pack_start(align, False, False, 5)
 | 
						|
        align.show()
 | 
						|
 | 
						|
        # Create the ProgressBar
 | 
						|
        self.pbar = gtk.ProgressBar()
 | 
						|
        self.pbar.set_text("some text")
 | 
						|
        self.pbar.set_fraction(0.0)
 | 
						|
 | 
						|
        align.add(self.pbar)
 | 
						|
        self.pbar.show()
 | 
						|
 | 
						|
        separator = gtk.HSeparator()
 | 
						|
        vbox.pack_start(separator, False, False, 0)
 | 
						|
        separator.show()
 | 
						|
 | 
						|
        # Add a button to start the progress button
 | 
						|
        button = gtk.Button("start")
 | 
						|
        button.connect("clicked", self.start_progress)
 | 
						|
        vbox.pack_start(button, False, False, 0)
 | 
						|
        button.show()
 | 
						|
 | 
						|
        # Add a button to exit the program
 | 
						|
        button = gtk.Button("close")
 | 
						|
        button.connect("clicked", self.destroy_progress)
 | 
						|
        vbox.pack_start(button, False, False, 0)
 | 
						|
        button.show()
 | 
						|
 | 
						|
        self.window.show()
 | 
						|
 | 
						|
def main():
 | 
						|
    gtk.main()
 | 
						|
    return 0
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    ProgressBar()
 | 
						|
    main()
 |