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.