Controlar un ProgressBar con Botones en Gtk 3 y Python


El componente ProgressBar nos ayuda a conocer el avance de una tarea, en este articulo veremos como crear un progressbar y controlar el avance con botones en Gtk 3 y Python.

El componente Gtk.ProgressBar cuenta con varias funciones que nos pueden servir.

  • pulse() sirve para agregar un pulso al progressbar, cuando el pulso llega al final de la barra entonces regresa y cuando llega al inicio de nuevo entonces cambia la direccion.
  • get_fraction() -> obtiene el valor del progressbar
  • set_fraction(value) -> asigna un valor al progressbar

Sabiendo esto ahora ya podemos ir al ejemplo.

Codigo

El siguiente codigo cuenta con comentarios para entender mejor el funcionamiento.

import gi
gi.require_version("Gtk","3.0")
from gi.repository import Gtk


class MyWindow(Gtk.Window):
	def __init__(self):
		Gtk.Window.__init__(self, title="Probando ProgressBar Gtk")
		# Agregamos una caja
		self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
		self.add(self.box)
		# Agregamos una Etiqueta de Texto
		self.label1 = Gtk.Label(label="Progress Bar Ejemplo")
		self.box.add(self.label1)
		# Agregamos otra Etiqueta de Texto
		self.label2 = Gtk.Label(label="Presiona + para subir avance y - para restar avance.")
		self.box.add(self.label2)
		# Agregamos una El Componente Progressbar
		self.progressbar1 = Gtk.ProgressBar()
		self.box.add(self.progressbar1)
		# Agregamos un Boton para Sumar 
		self.button1 = Gtk.Button(label="+")
		self.button1.connect("clicked", self.button1_click) # Asignamos la funcion que se ejecutara al presionar el boton 1
		self.box.add(self.button1)
		# Agregamos un Boton para Restar 
		self.button2 = Gtk.Button(label="-")
		self.button2.connect("clicked", self.button2_click) # Asignamos la funcion que se ejecutara al presionar el boton 2
		self.box.add(self.button2)

	def button1_click(self, widget):
		# Funcion para restar valores
		val = self.progressbar1.get_fraction() + 0.1 # Obtenemos el valor y le sumamos 0.1 o el 10%
		print(val)
		self.progressbar1.set_fraction(val) # Asignamos el nuevo valor

	def button2_click(self, widget):
		# Funcion para restar valores
		val = self.progressbar1.get_fraction() - 0.1 # Obtenemos el valor y le restamos 0.1 o el 10%
		print(val)
		self.progressbar1.set_fraction(val) # Asignamos el nuevo valor


### CREAR LA INSTANCIA A LA VENTANA Y MOSTRAR LA VENTANA
win = MyWindow()
win.set_default_size(640, 480)
win.connect("destroy",Gtk.main_quit)

win.show_all()
Gtk.main()

Para ejecutar el codigo debemos guardar el ejemplo como progressbar1gtk3.py o cualquier nombre que ustedes requieran.

Despues ejecutar el script desde la terminal: python3 progressbar1gtk3.py

Y ahora el resultado es el siguiente.

Y Listo, a seguir desarrollando con Python y Gtk 3.