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.