Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Kalendri koostamine on suurepärane võimalus õppida Pythoni Tkinteri mooduliga GUI-rakenduste loomise kohta. Selle rakenduse abil saate sündmusi enne tähtaega hallata ja planeerida.

Seda edasi tehes saate rakendust laiendada, et jälgida eelseisvaid koosolekuid ja määrata meeldetuletusi. Ajastamiskonfliktide vältimiseks võite isegi luua koostööd teiste kasutajate kalendritega.

Kõik algab GUI-kalendri rakenduse põhiskeletiga.

Moodulid Kalender, Tkinter ja DateTime

GUI kalendri koostamiseks kasutate kalendrit, Tkinterit ja DateTime moodulit. The Kalendri moodul kaasas Pythoniga ja võimaldab teil teha kuupäeva, kuu ja kalendriga seotud toiminguid.

Tkinter võimaldab teil luua töölauarakendusi. See pakub mitmesuguseid vidinaid, kasulikke teeke, lõuendiobjekte ja HTML/XML/PDF parsereid. GUI-rakenduse loomiseks peate tegema järgmist:

  1. Importige raamatukogu.
  2. Looge aken.
  3. Lisage sellesse aknasse vidinad.
  4. Kasutaja interaktsioonil põhinevate toimingute tegemiseks helistage põhisündmuste tsüklile.

Tkinteri installimiseks oma süsteemi avage terminal ja käivitage:

pip install tkinter

DateTime moodul on veel üks sisseehitatud moodul. See pakub mitmeid klasse, mis käsitlevad kuupäevi, kellaaegu ja ajavahemikke. Selle mooduli abil saate luua sündmuste ajakava, äratuskell, kuupäevakalkulaator ja ajavööndi rakendus.

Kuidas Pythoni abil GUI kalendrit koostada

Siit leiate Pythoni abil GUI kalendri lähtekoodi GitHubi hoidla.

Alustage mooduli Tkinter, Calendar ja DateTime importimisega. Määratlege funktsioon, printCalendar. Kasuta saada () meetod Spinboxis (määratletud koodis hiljem), et eraldada kasutaja valitud kuu ja aasta. Edastage need väärtused kalendrimoodulile, et saada vormindatud tekstikalender, mis esindab määratud aastat ja kuud. See tekst kujutab lihtsat üheruumilist ruudustikku, mille päevad on paigutatud nädalatesse alates esmaspäevast.

Kustutage ekraanilt kõik olemasolevad andmed. 1.0 tähistab välja algust ja lõpp näitab välja lõppu. Lõpuks sisestage varem loodud kalender ja kuvage see ekraanil.

alates tkinter importida *
importida kalender
alates kuupäev Kellaaeg importida kuupäeva

defprintCalendar():
kuu = int (month_box.get())
aasta = int (year_box.get())
output_calendar = kalender.kuu (aasta, kuu)
calendar_field.delete(1.0, 'lõpp')
calendar_field.insert('lõpp', väljund_kalender)

Määratlege funktsioon, lähtestada. Kustutage ekraanil olev sisu ja määrake kuu ja aasta olevik ning kasutage nuppu config() meetodit selle kuvamiseks ekraanil.

deflähtestada():
calendar_field.delete(1.0, 'lõpp')
month_var.set (praegune_kuu)
year_var.set (praegune_aasta)
month_box.config (tekstimuutuja=kuu_varumine)
year_box.config (tekstimuutuja=aasta_var)

Määratlege funktsioon, sulgege akna kuva hävitamiseks ja väljuge programmist.

defSulge():
guiWindow.destroy()

Initsialiseerige Tkinteri eksemplar ja kuvage juuraken. Määrake pealkiri, mõõtmed pikslites ja keelake selle suuruse muutmine, hoides parameetrid 0-na.

kui __nimi__ == "__main__":
guiWindow = Tk()
guiWindow.title("GUI kalender")
guiWindow.geometry("500x550")
guiWindow.resizable(0, 0)

Määrake päise pealkirja, kuu ja aasta kirje, kuva ja nuppude jaoks neli kaadrit. See täidab konteineri funktsiooni, suunates teiste vidinate paigutust. See korraldab nende vidinate paigutuse ja polsterduse, kasutades ekraanil ristkülikukujulisi sektsioone.

Korraldage raamid plokkideks enne nende asetamist gui-aknasse, kasutades nuppu pakk () meetod. Määrake laiendamise väärtuseks Tõene, et võimaldada vidinal saadaolevas ruumis suurust muuta ja laiendada. Määrake täita atribuut mõlemale, et võimaldada vidinal laieneda, et hõivata kogu aken x ja y suunas.

 header_frame = raam (guiWindow)
entry_frame = Raam (guiWindow)
result_frame = raam (guiWindow)
button_frame = raam (guiWindow)

header_frame.pack (laienda=Tõsi, täitke="mõlemad")
entry_frame.pack (laienda=Tõsi, täitke="mõlemad")
result_frame.pack (laienda=Tõsi, täitke="mõlemad")
button_frame.pack (laienda=Tõsi, täitke="mõlemad")

Määrake päise, kuu ja aasta jaoks kolm silti. Määrake ülemaken, kuhu soovite selle asetada, kuvatav tekst, fondi stiilid ja fondi värv. Pakkige ja asetage sildid sobivasse kohta. Seotud IntVar() koos kirje_raam täisarvuliste andmete määramiseks ja vastuvõtmiseks.

 header_label = Silt (header_frame, text="KALENDER",
font=("arial", '45', 'julge'), fg="#A020F0")

header_label.pack (laienda=Tõsi, täitke="mõlemad")

month_label = Silt (kirje_raam, tekst="Kuu:",
font=("arial", "20", "julge"), fg="#000000")

year_label = Silt (kirje_raam, tekst="Aasta:",
font=("arial", "20", "julge"), fg="#000000")

kuu_silt.koht (x=30, y=0)
aasta_silt.koht (x=275, y=0)
month_var = IntVar (entry_frame)
aasta_var = IntVar (entry_frame)

Hankige praegune kuu, aasta ja määrake see muutujaks IntVar(). Kasutage Spinboxi vidinat, et määrata kasutajale väärtuste vahemik. Määrake väärtuste vahemik, mida Spinbox sisaldab, laius, praegune väärtus, mida see peaks sisaldama, ja fondi stiilid. Asetage kastid sobivasse kohta.

 praegune_kuu = kuupäev.täna().kuu
praegune_aasta = kuupäev.täna().aasta
month_var.set (praegune_kuu)
year_var.set (praegune_aasta)

month_box = Spinbox (entry_frame, from_=1, kuni=12, laius="10",
textvariable=month_var, font=("arial",'15'))

year_box = Spinbox (entry_frame, from_=0000, kuni=3000, laius="10",
textvariable=year_var, font=("arial",'15'))

kuu_kast.koht (x=130, y=5)
aasta_kast.koht (x=360, y=5)

Deklareerige tekstiväli ja määrake selle põhiaken, laius, kõrgus, fondi stiil, 3D-animatsiooni stiil ja äärise laius. Korraldage tekstividin ja deklareerige kolm nuppu akna kuvamiseks, lähtestamiseks ja sulgemiseks. Nupud sisaldavad täiendavat taustavärvi atribuuti ja käsuatribuuti.

Käsu atribuudi abil saate määrata funktsiooni, mida see klõpsamisel käivitab. Asetage nupud ühte ritta nii, et nende vahel oleks piisavalt ruumi.

 kalendri_väli = Tekst (tulemuse_raam, laius=20, kõrgus =8,
font=("kuller", "18"), reljeef=RIDGE, piirilaius=2)

calendar_field.pack()

display_button = Nupp (button_frame, text="DISPLAY", bg="#A020F0",
fg="#E0FFFF", käsk=printCalendar, font=("arial", '15'))

reset_button = Nupp (button_frame, text="RESET", bg="#A020F0",
fg="#E0FFFF", käsk=reset, font=("arial",'15'))

close_button = Nupp (button_frame, text="SULGE", bg="#A020F0",
fg="#E0FFFF", käsk=sulge, font=("arial",'15'))

display_button.place (x=55, y=0)
lähtestamise_nupp.koht (x=210, y=0)
close_button.place (x=350, y=0)

The mainloop() funktsioon käsib Pythonil käivitada Tkinteri sündmuste tsükli ja kuulata sündmusi (nt nupuvajutused), kuni akna sulgete.

 guiWindow.mainloop()

Pange kogu kood kokku, et näha oma GUI kalendrit töös.

GUI kalendri näidisväljund

Programmi käivitamisel kuvatakse programmi kohal aken jooksva kuu ja kuupäevaga. Nupp Lähtesta kuvab klõpsamisel sama ekraani.

Kui valite kuuks 3 ja aastaks 2000, kuvab programm 2000. aasta märtsi kalendri. Nupu Sule vajutamisel hävitab programm akna ja peatab selle täitmise.

Võtke Pythoni abil ette mõned algajate GUI projektid

GUI-rakenduste loomine pole kunagi olnud nii lihtsam. Pythoni Tkinteri moodul pakub palju kasulikke vidinaid, mida saate väga vähese koodiga täielikult kohandada. Koos sellega saate juurdepääsu paigutushalduritele, nagu pakk, ruudustik ja koht, et paigutada elemente vastavalt oma soovile.

Alustamiseks saate luua tippimistestimängu, värvipaleti, valuutamuunduri või kalkulaatori. Neid rakendusi on lõbus ehitada ja need arendavad hõlpsalt teie objektorienteeritud programmeerimisoskusi.