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()
 |