Barra di avanzamento di Tkinter

Barra Di Avanzamento Di Tkinter



È possibile aggiornare il client sullo stato di un lungo processo con un widget della barra di avanzamento. L'obiettivo del widget è fornire all'utente la certezza che qualcosa sta accadendo. Ha due diverse modalità di funzionamento. Quando è in modalità determinata, il widget mostra un'indicazione che viaggia in una direzione predeterminata. Il widget viene spostato in uno stato indeterminato per dare al cliente l'impressione che stia accadendo qualcosa. Il segnale oscilla avanti e indietro tra le estremità del widget durante questo stile. L'utilizzo di barre di avanzamento determinate e indeterminate in Python sarà trattato in questo tutorial.

Iniziamo con la configurazione di una libreria Tkinter di Python. Dopo aver avviato con successo il terminale, prova la seguente query per configurare il pacchetto Tkinter. Assicurati di avere Python già installato prima di usare questa istruzione.

$ sudo apt install python3-tk







Esempio 1

Iniziamo con il nostro primo esempio di Python per utilizzare il modulo Tkinter per creare una determinata barra di avanzamento nella sua GUI. Pertanto, abbiamo creato un nuovo file Python chiamato 'new.py' e aggiunto il codice seguente. Abbiamo iniziato questo codice importando tutti gli oggetti figlio dalla libreria Tkinter di Python alla prima riga. Successivamente, abbiamo importato l'oggetto classe 'ttk' dal modulo Tkinter nella seconda riga di codice.



Il costruttore della classe Tk() è stato chiamato e salvato il suo oggetto nella variabile “t”. La funzione “titolo” è stata raggiunta con la variabile oggetto “t” per creare un titolo per la GUI. La dimensione di una finestra della GUI di Tkinter è stata impostata su '300×200' tramite la funzione geometric(). La barra di avanzamento verrebbe generata da una funzione definita dall'utente 'Pbar()'. Daremo un'occhiata a questa funzione nell'ultima parte di questo articolo.



Abbiamo creato una variabile 'p' in 8 th riga di questo codice Python che ha utilizzato la funzione Progressbar() tramite l'oggetto classe 'ttk' per creare una barra di avanzamento nella schermata della GUI. L'oggetto 't' gli è stato passato mentre il suo orientamento è stato impostato su Orizzontale, la sua lunghezza è stata impostata su 400 e la sua modalità è determinata, ovvero si muoverà solo in una particolare direzione. Il riempimento dell'asse 'y' è stato impostato su 30 mediante l'uso della funzione 'pack()' per questa barra di avanzamento.





Successivamente, abbiamo creato un nuovo pulsante 'b' mediante l'uso della funzione Button() e passandogli l'oggetto 't', del testo e il comando da eseguire dopo aver cliccato sul pulsante, ovvero la funzione chiamata la funzione “Pbar”. La funzione Pbar() incrementerebbe il valore della barra di avanzamento “p” di dieci e ritornerebbe alla variabile “b”. Il riempimento dell'asse 'y' per il pulsante è stato impostato su '10' utilizzando la funzione pack() e la funzione mainloop() è qui per eseguire il ciclo dell'intera esecuzione.



Dopo aver completato un codice Python, lo abbiamo salvato e eseguito sulla console tramite la query 'python3' seguita dal nome di un file 'new.py':

$ python3 new.py

Ha lanciato la GUI Tkinter di Python con il titolo 'Progress Bar' sullo schermo della nostra console. Nell'immagine seguente è presente solo una barra di avanzamento senza elaborazione. Devi prima toccare il pulsante.

Dopo aver toccato il pulsante 'Tocca qui!', la barra di avanzamento blu è stata mostrata come segue:

Dopo tre clic consecutivi, abbiamo ricevuto i seguenti progressi senza alcun movimento:

Dopo aver raggiunto la fine della barra di avanzamento, non possiamo spostarci ulteriormente, ovvero una determinata barra di avanzamento.

Esempio 2

Diamo un'occhiata alla creazione di una barra di avanzamento indeterminata che può spostarsi avanti e indietro all'interno dell'area di avanzamento utilizzando il modulo Python della GUI di Tkinter. Quindi, abbiamo iniziato questo codice Python importando il modulo Tkinter come 'tk' e l'oggetto ttk dalla classe 'ttk'. L'oggetto tk è stato eliminato per ottenere il risultato del costruttore 'Tk()' e salvato nella variabile 't'.



La variabile 't' è stata utilizzata con la funzione title() per aggiungere un titolo per la GUI insieme alla funzione geometric() per determinare la dimensione di una finestra della GUI da visualizzare. La funzione grid() è stata chiamata con la variabile “t” per organizzare la GUI in un formato tabulare.

Successivamente, abbiamo utilizzato la variabile 'p' per creare una barra di avanzamento tramite la funzione Progressbar() dell'oggetto classe ttk con la stessa variabile 't', orientamento orizzontale, 300 lunghezze e modalità indeterminata. La barra di avanzamento è stata organizzata in modo tabulare tramite la funzione “grid()” che ha utilizzato il riempimento specifico per gli assi “x” e “y”. Abbiamo creato due pulsanti, 's' ed 'e', per avviare il movimento della barra di avanzamento, terminarlo e spostarlo avanti e indietro.







Il parametro sticky della funzione grid() per entrambi i pulsanti definisce la direzione, ovvero Est e Ovest. I comandi, “start” e “stop”, sono stati impostati per entrambi i pulsanti in corrispondenza del 9 th e 11 th linea. Con l'esecuzione della funzione mainloop(), il nostro programma è stato completato e pronto per l'uso dopo averlo salvato.





L'esecuzione è avvenuta in modo simile.





$ python3 new.py

All'avvio della GUI, è stata presentata la seguente schermata:



Dopo aver premuto il pulsante 'Tocca per iniziare', la barra di avanzamento ha iniziato a spostarsi in avanti.

Dopo aver raggiunto la fine, si muove nella direzione opposta, cioè Ovest.

Una volta terminato di toccare il pulsante 'Tocca per interrompere', la barra di avanzamento è stata nuovamente impostata nella posizione iniziale.

Conclusione

Questo articolo ha mostrato l'uso della barra di avanzamento nella GUI di Tkinter. Abbiamo semplicemente utilizzato gli oggetti della classe Tkinter per chiamare diversi widget per rendere la GUI di Python più interattiva. Abbiamo discusso l'utilizzo di barre di avanzamento determinate e indeterminate nei nostri esempi. Ci auguriamo che ti piaccia implementarli.