Construirea unui calendar este o modalitate excelentă de a învăța despre crearea aplicațiilor GUI cu modulul Tkinter de la Python. Puteți folosi această aplicație pentru a gestiona și planifica evenimente din timp.
Mergând mai departe, puteți extinde aplicația pentru a urmări întâlnirile viitoare și a seta mementouri. Puteți chiar introduce colaborarea cu calendarele altor utilizatori pentru a evita conflictele de programare.
Totul începe cu scheletul de bază al unei aplicații GUI Calendar.
Modulele Calendar, Tkinter și DateTime
Pentru a construi calendarul GUI, veți folosi Calendar, Tkinter și Modulul DateTime. The Modulul de calendar vine cu Python și vă permite să executați acțiuni legate de dată, lună și calendar.
Tkinter vă permite să creați aplicații desktop. Oferă o varietate de widget-uri, biblioteci utile, obiecte canvas și analizoare HTML/XML/PDF. Pentru a construi o aplicație GUI, tot ce trebuie să faceți este:
- Importă biblioteca.
- Creați o fereastră.
- Adăugați widget-uri la acea fereastră.
- Apelați bucla principală a evenimentului pentru a efectua acțiuni bazate pe interacțiunea utilizatorului.
Pentru a instala Tkinter în sistemul dvs., deschideți un terminal și rulați:
pip install tkinter
Modulul DateTime este un alt modul încorporat. Oferă mai multe clase care se pot ocupa de date, ore și intervale de timp. Cu acest modul, puteți construi un planificator de evenimente, un ceas desteptator, un calculator de dată și o aplicație de fus orar.
Cum să construiți un calendar GUI folosind Python
Puteți găsi codul sursă al calendarului GUI folosind Python în aceasta Depozitul GitHub.
Începeți prin a importa modulul Tkinter, Calendar și DateTime. Definiți o funcție, printCalendar. Folosește obține() metoda de pe Spinbox (definită mai târziu în cod) pentru a extrage luna și anul pe care utilizatorul le-a ales. Transmite aceste valori la modulul de calendar pentru a obține un calendar text formatat reprezentând anul și luna specificate. Acest text reprezintă o grilă monospațială simplă, cu zile aranjate în săptămâni începând de luni.
Ștergeți toate datele existente de pe ecran. 1.0 indică începutul câmpului și Sfârşit indică sfârșitul câmpului. În cele din urmă, introduceți calendarul generat anterior și afișați-l pe ecran.
din tkinter import *
import calendar
din datetime import Data
defprintCalendar():
luna = int (lună_box.get())
year = int (year_box.get())
output_calendar = calendar.month (an, lună)
calendar_field.delete(1.0, 'Sfârşit')
calendar_field.insert('Sfârşit', output_calendar)
Definiți o funcție, resetare. Ștergeți conținutul de pe ecran și setați luna și anul la prezent și utilizați config() metoda de a-l afișa pe ecran.
defresetare():
calendar_field.delete(1.0, 'Sfârşit')
month_var.set (luna_curentă)
year_var.set (an_actual)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)
Definiți o funcție, aproape pentru a distruge afișajul ferestrei și ieșiți din program.
defînchide():
guiWindow.destroy()
Inițializați instanța Tkinter și afișați fereastra rădăcină. Setați titlul, dimensiunile în pixeli și dezactivați redimensionarea acestuia, păstrând parametrii la 0.
dacă __nume__ == "__principal__":
guiWindow = Tk()
guiWindow.title(„Calendarul GUI”)
guiWindow.geometry(„500x550”)
guiWindow.resizable(0, 0)
Definiți patru cadre pentru titlul antetului, intrarea lunii și anului, afișajul și butoanele. Îndeplinește funcția de container, direcționând plasarea altor widget-uri. Acesta aranjează aspectul și oferă umplutură pentru aceste widget-uri folosind secțiuni dreptunghiulare de pe ecran.
Organizați ramele în blocuri înainte de a le așeza în fereastră folosind ambalaj() metodă. Setați valoarea expand la true pentru a permite widget-ului să se redimensioneze și să se extindă în spațiul său disponibil. Seteaza completati atribuiți ambelor pentru a permite widget-ului să se extindă pentru a ocupa întreaga fereastră în direcția x și y.
header_frame = Cadru (guiWindow)
entry_frame = Cadru (guiWindow)
result_frame = Cadru (guiWindow)
button_frame = Cadru (guiWindow)
header_frame.pack (expand=Adevărat, umple="ambii")
entry_frame.pack (expand=Adevărat, umple="ambii")
result_frame.pack (expand=Adevărat, umple="ambii")
button_frame.pack (expand=Adevărat, umple="ambii")
Specificați trei etichete pentru antet, lună și an. Setați fereastra părinte în care doriți să o plasați, textul pe care îl va afișa, stilurile de font împreună cu culoarea fontului. Ambalați și așezați etichetele într-o poziție adecvată. Asociat IntVar() cu entry_frame pentru a seta și a primi date întregi.
header_label = Etichetă (header_frame, text="CALENDAR",
font=("arial", '45', 'îndrăzneţ'), fg=„#A020F0”)header_label.pack (expand=Adevărat, umple="ambii")
month_label = Etichetă (entry_frame, text="Lună:",
font=("arial", "20", "îndrăzneţ"), fg="#000000")year_label = Etichetă (entry_frame, text="An:",
font=("arial", "20", "îndrăzneţ"), fg="#000000")
luna_etichetă.loc (x=30, y=0)
year_label.place (x=275, y=0)
month_var = IntVar (cadru_întrare)
year_var = IntVar (cadru_de intrare)
Obțineți luna, anul curent și setați-l la variabila IntVar(). Utilizați widget-ul Spinbox pentru a specifica un interval de valori pentru utilizator. Setați intervalul de valori pe care îl va conține Spinbox, lățimea, valoarea curentă pe care ar trebui să o păstreze și stilurile de font. Poziționați casetele în mod corespunzător.
luna_actuală = data.azi().lună
anul_actual = data.azi().an
month_var.set (luna_curentă)
year_var.set (an_actual)month_box = Spinbox (entry_frame, from_=1, la=12, latime="10",
textvariable=month_var, font=("arial",'15'))year_box = Spinbox (entry_frame, from_=0000, la=3000, latime="10",
textvariable=year_var, font=("arial",'15'))
luna_box.loc (x=130, y=5)
year_box.loc (x=360, y=5)
Declarați un câmp de text și setați fereastra părinte, lățimea, înălțimea, stilul fontului, stilul de animație 3D și lățimea chenarului. Organizați widgetul text și declarați trei butoane pentru a afișa, reseta și închide fereastra. Butoanele conțin o proprietate suplimentară de culoare de fundal și o proprietate de comandă.
Folosind proprietatea comenzii, puteți seta funcția pe care ar trebui să o execute odată ce ați dat clic. Așezați butoanele într-un singur rând, cu spațiu amplu între fiecare dintre ele.
calendar_field = Text (cadru_rezultat, lățime=20, inaltime=8,
font=("curier", "18"), relief=RIDGE, borderwidth=2)calendar_field.pack()
display_button = Buton (button_frame, text="AFIŞA", bg=„#A020F0”,
fg=„#E0FFFF”, comanda=printCalendar, font=("arial", '15'))reset_button = Buton (button_frame, text="RESETARE", bg=„#A020F0”,
fg=„#E0FFFF”, comanda=resetare, font=("arial",'15'))close_button = Buton (button_frame, text="ÎNCHIDE", bg=„#A020F0”,
fg=„#E0FFFF”, comanda=închidere, font=("arial",'15'))
display_button.place (x=55, y=0)
reset_button.place (x=210, y=0)
close_button.place (x=350, y=0)
The mainloop() funcția îi spune lui Python să ruleze bucla de evenimente Tkinter și să asculte evenimente (cum ar fi apăsările de butoane) până când închideți fereastra.
guiWindow.mainloop()
Puneți tot codul împreună pentru a vedea calendarul dvs. GUI în acțiune.
Exemplu de ieșire a calendarului GUI
La rularea programului deasupra programului afișează o fereastră cu luna și data curente. Butonul Resetare afișează același ecran când este făcut clic.
La setarea lunii la 3 și a anului la 2000, programul afișează calendarul pentru martie 2000. La apăsarea butonului Închidere, programul distruge fereastra și oprește execuția acesteia.
Acceptați câteva proiecte GUI pentru începători folosind Python
Construirea de aplicații GUI nu a fost niciodată atât de ușoară. Modulul Tkinter al lui Python oferă multe widget-uri utile pe care le puteți personaliza complet cu foarte puțin cod. Împreună cu aceasta, aveți acces la manageri de aspect, cum ar fi pachetul, grila și locul pentru a poziționa elementele în funcție de dorința dvs.
Puteți crea un joc de test de tastare, o paletă de culori, un convertor valutar sau un calculator pentru a începe. Aceste aplicații sunt distractive de construit și îți vor dezvolta abilitățile de programare orientate pe obiecte cu ușurință.