Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Izrada kalendara izvrstan je način da naučite o stvaranju GUI aplikacija s Pythonovim Tkinter modulom. Ovu aplikaciju možete koristiti za upravljanje i planiranje događaja unaprijed.

Idući dalje, možete proširiti aplikaciju za praćenje nadolazećih sastanaka i postavljanje podsjetnika. Možete čak uvesti suradnju s kalendarima drugih korisnika kako biste izbjegli sukobe u rasporedu.

Sve počinje s osnovnim kosturom aplikacije GUI Calendar.

Moduli Kalendar, Tkinter i DateTime

Za izradu GUI kalendara, koristit ćete Calendar, Tkinter i DateTime Module. The Modul kalendara dolazi s Pythonom i omogućuje vam izvršavanje radnji povezanih s datumom, mjesecom i kalendarom.

Tkinter vam omogućuje stvaranje desktop aplikacija. Nudi razne widgete, korisne biblioteke, objekte platna i HTML/XML/PDF parsere. Za izradu GUI aplikacije sve što trebate učiniti je:

  1. Uvezi biblioteku.
  2. instagram viewer
  3. Napravite prozor.
  4. Dodajte widgete tom prozoru.
  5. Pozovite glavnu petlju događaja za izvođenje radnji na temelju interakcije korisnika.

Da biste instalirali Tkinter u svoj sustav, otvorite terminal i pokrenite:

pip instaliraj tkinter

Modul DateTime još je jedan ugrađen. Nudi nekoliko klasa koje se mogu baviti datumima, vremenima i vremenskim intervalima. Pomoću ovog modula možete izraditi planer događaja, budilica, kalkulator datuma i aplikacija za vremensku zonu.

Kako napraviti GUI kalendar koristeći Python

Ovdje možete pronaći izvorni kod GUI kalendara koji koristi Python GitHub spremište.

Započnite s uvozom modula Tkinter, Calendar i DateTime. Definirajte funkciju, ispisKalendar. Koristiti dobiti() metodu na Spinboxu (definirano kasnije u kodu) za izdvajanje mjeseca i godine koje je korisnik odabrao. Proslijedite ove vrijednosti modulu kalendara da biste dobili formatirani tekstualni kalendar koji predstavlja navedenu godinu i mjesec. Ovaj tekst predstavlja jednostavnu jednoprostornu mrežu s danima raspoređenim u tjedne počevši od ponedjeljka.

Izbrišite sve postojeće podatke sa zaslona. 1.0 označava početak polja, i kraj označava kraj polja. Na kraju, umetnite ranije generirani kalendar i prikažite ga na zaslonu.

iz tkinter uvoz *
uvoz kalendar
iz Datum vrijeme uvoz datum

defispisKalendar():
mjesec = int (month_box.get())
godina = int (year_box.get())
output_calendar = calendar.month (godina, mjesec)
calendar_field.delete(1.0, 'kraj')
calendar_field.insert('kraj', izlazni_kalendar)

Definirajte funkciju, resetirati. Obrišite sadržaj na ekranu i postavite mjesec i godinu na sadašnjost i koristite config() način prikazivanja na ekranu.

defresetirati():
calendar_field.delete(1.0, 'kraj')
month_var.set (trenutni_mjesec)
year_var.set (trenutna_godina)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)

Definirajte funkciju, zatvorite kako biste uništili prozor i izađite iz programa.

defZatvoriti():
guiWindow.destroy()

Inicijalizirajte Tkinter instancu i prikažite korijenski prozor. Postavite naslov, dimenzije u pikselima i onemogućite njegovu promjenu veličine tako da zadržite parametre na 0.

ako __ime__ == "__glavni__":
guiWindow = Tk()
guiWindow.title("GUI kalendar")
guiWindow.geometry('500x550')
guiWindow.resizable(0, 0)

Definirajte četiri okvira za naslov zaglavlja, unos mjeseca i godine, prikaz i gumbe. Obavlja funkciju spremnika, usmjeravajući postavljanje drugih widgeta. Uređuje izgled i pruža ispunu za ove widgete koristeći pravokutne dijelove na zaslonu.

Organizirajte okvire u blokove prije nego što ih stavite u guiwindow pomoću paket() metoda. Postavite vrijednost expand na true kako biste widgetu omogućili promjenu veličine i proširenje u raspoloživom prostoru. Postavi ispuniti atribut oba kako bi se widgetu omogućilo da se proširi i zauzme cijeli prozor u smjeru x i y.

 header_frame = Okvir (guiWindow)
entry_frame = Okvir (guiWindow)
result_frame = Okvir (guiWindow)
button_frame = Okvir (guiWindow)

okvir_zaglavlja.pack (proširi=Pravi, ispuni="oba")
ulazni_okvir.pack (proširi=Pravi, ispuni="oba")
result_frame.pack (expand=Pravi, ispuni="oba")
button_frame.pack (expand=Pravi, ispuni="oba")

Navedite tri oznake za zaglavlje, mjesec i godinu. Postavite nadređeni prozor u koji ga želite smjestiti, tekst koji će prikazati, stilove i boju fonta. Spakirajte i postavite naljepnice na odgovarajuće mjesto. Suradnik IntVar() s ulazni_okvir za postavljanje i primanje cjelobrojnih podataka.

 oznaka_zaglavlja = Oznaka (okvir_zaglavlja, tekst="KALENDAR",
font=('arial', '45', 'podebljano'), fg="#A020F0")

oznaka_zaglavlja.pack (proširi=Pravi, ispuni="oba")

month_label = Oznaka (ulazni_okvir, tekst="Mjesec:",
font=("arial", "20", "podebljano"), fg="#000000")

year_label = Oznaka (ulazni_okvir, tekst="Godina:",
font=("arial", "20", "podebljano"), fg="#000000")

mjesec_oznaka.mjesto (x=30, y=0)
godina_oznaka.mjesto (x=275, y=0)
month_var = IntVar (entry_frame)
year_var = IntVar (entry_frame)

Dobijte trenutni mjesec, godinu i postavite ga na varijablu IntVar(). Upotrijebite widget Spinbox da odredite raspon vrijednosti za korisnika. Postavite raspon vrijednosti koje će Spinbox sadržavati, širinu, trenutnu vrijednost koju treba sadržavati i stilove fonta. Postavite kutije na odgovarajući način.

 trenutni_mjesec = datum.danas().mjesec
tekuća_godina = datum.danas().godina
month_var.set (trenutni_mjesec)
year_var.set (trenutna_godina)

month_box = Spinbox (entry_frame, from_=1, do=12, širina="10",
textvariable=month_var, font=('arial','15'))

year_box = Spinbox (ulazni_okvir, from_=0000, do=3000, širina="10",
textvariable=year_var, font=('arial','15'))

mjesec_kutija.mjesto (x=130, y=5)
year_box.place (x=360, y=5)

Deklarirajte tekstualno polje i postavite njegov nadređeni prozor, širinu, visinu, stil fonta, stil 3D animacije i širinu obruba. Organizirajte tekstualni widget i označite tri gumba za prikaz, resetiranje i zatvaranje prozora. Gumbi sadrže dodatno svojstvo boje pozadine i svojstvo naredbe.

Koristeći svojstvo naredbe, možete postaviti funkciju koju treba izvršiti nakon klika. Postavite gumbe u jedan red s dovoljno prostora između svakog od njih.

 calendar_field = Tekst (okvir_rezultata, širina=20, visina=8,
font=("kurir", "18"), reljef=GRBEN, širina granice=2)

calendar_field.pack()

display_button = Gumb (okvir_gumba, tekst="PRIKAZ", bg="#A020F0",
fg="#E0FFFF", naredba=ispisKalendara, font=('arial', '15'))

reset_button = Gumb (okvir_gumba, tekst="RESET", bg="#A020F0",
fg="#E0FFFF", naredba=reset, font=('arial','15'))

close_button = Gumb (okvir_gumba, tekst="ZATVORITI", bg="#A020F0",
fg="#E0FFFF", naredba=zatvori, font=('arial','15'))

display_button.place (x=55, y=0)
reset_button.place (x=210, y=0)
zatvori_gumb.mjesto (x=350, y=0)

The glavna petlja() funkcija govori Pythonu da pokrene Tkinter petlju događaja i osluškuje događaje (kao što su pritisci gumba) dok ne zatvorite prozor.

 guiWindow.mainloop()

Sastavite sav kod kako biste vidjeli svoj GUI kalendar na djelu.

Ogledni izlaz GUI kalendara

Prilikom pokretanja programa iznad programa prikazuje se prozor s trenutnim mjesecom i datumom. Gumb Reset prikazuje isti zaslon kada se klikne.

Postavljanjem mjeseca na 3 i godine na 2000., program prikazuje kalendar za ožujak 2000. godine. Pritiskom na gumb Zatvori, program uništava prozor i zaustavlja njegovo izvršavanje.

Uzmite neke GUI projekte za početnike koristeći Python

Izrada GUI aplikacija nikada nije bila tako lakša. Pythonov modul Tkinter pruža mnogo korisnih widgeta koje možete u potpunosti prilagoditi s vrlo malo koda. Uz to, dobivate pristup upraviteljima izgleda kao što su pakiranje, rešetka i mjesto za pozicioniranje elemenata prema vašoj želji.

Za početak možete izraditi igru ​​za testiranje tipkanja, paletu boja, pretvarač valuta ili kalkulator. Ove je aplikacije zabavno graditi i s lakoćom će razviti vaše vještine objektno orijentiranog programiranja.