Barra de progreso tkinter

Barra de progreso tkinter

Cuando se trabaja con GUI, a menudo es una excelente opción para mostrar la cantidad del proceso realizado en forma de una barra de progreso. Dado que el Tkinter es una biblioteca de Python de construcción de GUI, proporciona un método incorporado para construir una barra de progreso fácilmente. Esta guía le mostrará cómo no solo construir una barra de progreso sino también cómo usar dos modos diferentes y cambiar el valor de la barra de progreso.

Cómo construir una barra de progreso en Tkinter Python?

Debe importar el paquete "TTK" y usar su método ProgressBar ().

progvar = ttk.ProgressBar (FrameVar, Oriente, Longitud, Modo)

En la sintaxis del método ProgressBar ():

  • progvar: Es la variable que se utilizará para acceder a los diferentes atributos de la barra de progreso después de su creación
  • marco: Es la variable tkinter tk, que es el marco/panel en el que se mostraría el progreso
  • orientar: Este argumento se utilizará para definir y establecer la orientación de la barra de progreso
  • longitud: Este argumento se utilizará para definir y la longitud de la barra de progreso
  • modo: El argumento de modo se usa para establecer el modo en "determinar" o "indeterminado"

Construyamos una barra de progreso simple en Tkinter, que progresa en un 10% al presionar un botón utilizando el siguiente código:

#Integre importando las bibliotecas Tkinter
de tkinter import *
de tkinter import ttk
#Después de la importación, cree el marco utilizando el método tk ()
marco = tk ()
marco.Título ("Linuxhint - Barra de progreso")
marco.Geometría ("400x200")
ventana = marco (marco)
#Method para aumentar el valor de progreso
def pbar ():
progbar ['valor']+= 10
#Build ProgressBar
progbar = ttk.ProgressBar (marco, orient = horizontal, longitud = 400, mode = "determinado")
progbar.Paquete (Pady = 40)
#Botón de construcción
btn = botón (marco, text = "Haga clic aquí!", comando = pbar)
btn.Paquete (Pady = 10)
marco.bucle principal()

En este fragmento de código:

  • Primero, importe el paquete "Tkinter" y también el paquete "TTK", que contiene el método ProgressBar ()
  • Crear un marco utilizando el método tk ()
  • Defina el método pbar (), que utiliza la variable de la barra de progreso "progbar" para acceder al atributo "valor" y lo aumenta en 10
  • Cree la variable "progbar" utilizando el método ProgressBar () y establezca la orientación a horizontal y modo para determinar
  • Por último, cree un botón que llame al método pbar () para aumentar el valor de la barra de progreso.

Cuando se ejecuta este fragmento de código, produce la siguiente ventana Tkinter en su máquina:

Como puede ver en el GIF de salida, se creó la barra de progreso y siguió progresando al hacer clic en el botón. Sin embargo, una vez que la barra de progreso ha alcanzado la longitud máxima, no se produce más cambios en el botón Presione.

Cómo hacer la barra de progreso ir y venir en Tkinter Python?

Para que la barra de progreso vaya y vaya al presionar el botón, debe usar la barra de progreso "indeterminada". Con una barra de progreso "indeterminada", el objetivo no es mostrar el porcentaje del trabajo realizado por el proceso al usuario. Más bien, el objetivo es solo mostrar que una acción/evento está en proceso.

Para crear una barra de progreso indeterminada, simplemente cambie el argumento de modo en el método ProgressBar () para "indeterminado":

progbar = ttk.ProgressBar (marco, orient = horizontal, longitud = 400, mode = "determinado")

Coloque esta línea en el ejemplo anterior, ejecute el programa y producirá la siguiente ventana Tkinter:

Como puede ver en la salida GIF, la barra de progreso indeterminada no se detuvo en la marca del 100%, sino que comenzó a ir y venir a los clics del botón.

Cómo restablecer la barra de progreso en Tkinter Python?

Para restablecer el valor de la barra de progreso, simplemente use la variable de la barra de progreso para acceder al atributo "valor" y establecer su valor igual a cero. Una buena práctica es restablecer el valor de la barra de progreso en un botón presione.

Para demostrar esto, tome este código modificado del primer ejemplo:

de tkinter import *
de tkinter import ttk
#Después de la importación, cree el marco utilizando el método tk ()
marco = tk ()
marco.Título ("Linuxhint - Barra de progreso")
marco.Geometría ("400x200")
ventana = marco (marco)
#Method para aumentar/restablecer el valor de progreso
def pbar ():
progbar ['valor']+= 10
DEF RESETPBAR ():
progbar ['valor'] = 0
#Build ProgressBar
progbar = ttk.ProgressBar (marco, orient = horizontal, longitud = 400, mode = "indeterminado")
progbar.Paquete (Pady = 40)
#Botones de construcción
btn = botón (frame, text = "progreso", comando = pbar)
btn.Paquete (Pady = 10)
btn2 = botón (frame, text = "reset", comando = resetpbar).Paquete (PADX = 10)
marco.bucle principal()

Cuando se ejecuta este código, produce el siguiente comportamiento de la ventana Tkinter en su máquina:

Puede observar que tan pronto como se presiona el botón "Restablecer", el progreso se restablece a 0.

Conclusión

Las barras de progreso son una excelente manera de informar al usuario final sobre el porcentaje de finalización o el estado de ejecución de una acción. Para construir una barra de progreso en Tkinter, use el método ProgressBar () del paquete "TTK" y pase los valores para el marco, la orientación, la longitud y el modo. Para cambiar el valor de progreso de la barra de progreso, acceder a su "valor" de atributo y cambiar su valor de acuerdo con sus requisitos.