Tkinter Progress Bar

Tkinter Progress Bar



Maaari mong i-update ang kliyente sa katayuan ng isang mahabang proseso gamit ang isang progress bar widget. Ang layunin ng widget ay magbigay ng kumpiyansa sa gumagamit na may nangyayari. Mayroon itong dalawang magkaibang mode ng operasyon. Kapag nasa determinate mode, ang widget ay nagpapakita ng indikasyon na naglalakbay sa isang paunang natukoy na direksyon. Ang widget ay inilipat sa isang hindi tiyak na estado upang payagan ang kliyente ng isang impression na may nangyayari. Ang signal ay umuusad pabalik-balik sa pagitan ng mga dulo ng widget sa buong istilong ito. Ang paggamit ng determinate at indeterminate progress bar sa Python ay sasaklawin sa tutorial na ito.

Magsimula tayo sa pagsasaayos ng isang Tkinter library ng Python. Pagkatapos ng matagumpay na paglunsad ng terminal, subukan ang sumusunod na query upang i-configure ang Tkinter package. Tiyaking naka-install na ang Python bago gamitin ang tagubiling ito.

$ sudo apt install python3-tk







Halimbawa 1

Magsimula tayo sa aming unang halimbawa ng Python upang gamitin ang Tkinter module upang lumikha ng isang tiyak na progress bar sa GUI nito. Kaya, gumawa kami ng bagong Python file na pinangalanang 'new.py' at idinagdag ang sumusunod na code. Sinimulan namin ang code na ito sa pamamagitan ng pag-import ng lahat ng child object mula sa Tkinter library ng Python sa unang linya. Pagkatapos nito, na-import namin ang object ng klase na 'ttk' mula sa module ng Tkinter sa pangalawang linya ng code.



Ang Tk() class constructor ay tinawag at nai-save ang object nito sa variable na 't'. Ang function na 'title' ay naabot gamit ang 't' object variable upang lumikha ng isang pamagat para sa GUI. Ang laki ng isang window ng GUI Tkinter ay naitakda sa “300×200” sa pamamagitan ng geometry() function. Ang progress bar ay bubuo ng isang function na 'Pbar()' na tinukoy ng user. Susuriin natin ang function na ito sa huling bahagi ng artikulong ito.



Gumawa kami ng variable na 'p' sa 8 ika linya ng Python code na ito na gumagamit ng Progressbar() function sa pamamagitan ng “ttk” class object upang lumikha ng progress bar sa GUI screen. Ang object na 't' ay naipasa dito habang ang oryentasyon nito ay nakatakda sa Horizontal, ang haba nito ay nakatakda sa 400, at ang mode nito ay determinado, ibig sabihin, ito ay lilipat sa isang partikular na direksyon lamang. Ang 'y' axis padding ay naitakda sa 30 sa pamamagitan ng paggamit ng 'pack()' function para sa progress bar na ito.





Pagkatapos nito, gumagawa kami ng bagong button na 'b' sa pamamagitan ng paggamit ng Button() function at ipinapasa ito sa object na 't', ilang text, at ang command na isasagawa pagkatapos ng pag-click sa button, ibig sabihin, function na tinatawag ang function na 'Pbar'. Ang function na Pbar() ay dinadagdagan ng sampu ang halaga ng progress bar 'p' at babalik sa variable na 'b'. Ang 'y' axis padding para sa button ay itinakda sa '10' gamit ang pack() function, at ang mainloop() function ay narito upang i-loop out ang buong execution.



Pagkatapos makumpleto ang isang Python code, nai-save namin ito at pinaandar ito sa console sa pamamagitan ng query na 'python3' na sinusundan ng pangalan ng isang file na 'new.py':

$ python3 new.py

Inilunsad nito ang Tkinter GUI ng Python na may pamagat na 'Progress Bar' sa aming console screen. Sa sumusunod na larawan, mayroon lamang progress bar na walang pagpoproseso. Kailangan mo munang i-tap ang button.

Pagkatapos i-tap ang button, 'I-tap dito!', ang asul na progress bar ay ipinakita tulad ng sumusunod:

Pagkatapos ng tatlong magkakasunod na pag-click, natanggap namin ang sumusunod na pag-unlad nang walang paggalaw:

Pagkatapos maabot ang dulo ng progress bar, hindi na kami makakagalaw pa, ibig sabihin, tiyak na progress bar.

Halimbawa 2

Tingnan natin ang paglikha ng isang hindi tiyak na progress bar na maaaring umusad at pasulong sa loob ng progreso na lugar gamit ang Tkinter GUI Python module. Kaya, sinimulan namin ang Python code na ito sa pamamagitan ng pag-import ng Tkinter module bilang 'tk' at ang ttk object mula sa 'ttk' na klase. Ang tk object ay pinalayas upang makuha ang constructor na 'Tk()' na resulta at nai-save sa variable na 't'.



Ang variable na 't' ay ginamit kasama ang title() function upang magdagdag ng isang pamagat para sa GUI kasama ng geometry() function upang matukoy ang laki ng isang GUI window na ipapakita. Ang grid() function ay tinawag na may variable na 't' upang ayusin ang GUI sa isang tabular na format.

Pagkatapos noon, ginagamit na namin ang variable na 'p' para gumawa ng progress bar sa pamamagitan ng Progressbar() function ng ttk class object na may parehong variable na 't', horizontal orientation, 300 haba, at ang indeterminate mode. Ang progress bar ay inayos sa isang tabular na paraan sa pamamagitan ng 'grid()' function na gumagamit ng partikular na padding para sa 'x' at 'y' axis. Gumawa kami ng dalawang pindutan, 's' at 'e', para sa pagsisimula ng paggalaw ng progress bar, pagtatapos nito, at paglipat nito pabalik-balik.







Ang malagkit na parameter ng grid() function para sa parehong mga pindutan ay tumutukoy sa direksyon, ibig sabihin, Silangan at Kanluran. Ang mga utos, 'simula' at 'ihinto', ay itinakda para sa parehong mga pindutan sa 9 ika at 11 ika linya. Sa pagpapatupad ng mainloop() function, ang aming programa ay nakumpleto at handa nang gamitin pagkatapos itong i-save.





Ang pagpapatupad ay naganap gamit ang katulad na paraan.





$ python3 new.py

Sa inilunsad na GUI, ipinakita ang sumusunod na screen:



Matapos pindutin ang pindutang 'I-tap para Magsimula', ang progress bar ay nagsimulang sumulong.

Matapos maabot ang dulo, ito ay gumagalaw sa tapat na direksyon, ibig sabihin, Kanluran.

Kapag tapos na ang pag-tap sa 'Tap to Stop' na button, ang progress bar ay naitakda na muli sa paunang posisyon.

Konklusyon

Ipinakita ng artikulong ito ang paggamit ng progress bar sa Tkinter GUI. Ginamit lang namin ang mga bagay ng klase ng Tkinter upang tumawag ng iba't ibang mga widget upang gawing mas interactive ang Python GUI. Tinalakay namin ang paggamit ng mga tiyak at hindi tiyak na progress bar sa aming mga halimbawa. Umaasa kaming nasiyahan ka sa pagpapatupad ng mga ito.