Å bygge en kalender er en fin måte å lære om å lage GUI-applikasjoner med Pythons Tkinter-modul. Du kan bruke denne applikasjonen til å administrere og planlegge arrangementer på forhånd.
Hvis du tar det videre, kan du utvide appen til å spore kommende møter og angi påminnelser. Du kan til og med introdusere samarbeid med andre brukeres kalendere for å unngå planleggingskonflikter.
Det hele begynner med det grunnleggende skjelettet til en GUI-kalender-app.
Kalender-, Tkinter- og DateTime-modulene
For å bygge GUI-kalenderen bruker du kalenderen, Tkinter og DateTime-modulen. De Kalendermodul leveres med Python og lar deg utføre dato-, måned- og kalenderrelaterte handlinger.
Tkinter lar deg lage skrivebordsapplikasjoner. Den tilbyr en rekke widgets, nyttige biblioteker, lerretsobjekter og HTML/XML/PDF-parsere. Alt du trenger å gjøre for å bygge en GUI-applikasjon er:
- Importer biblioteket.
- Lag et vindu.
- Legg til widgets i det vinduet.
- Ring hovedhendelsesløkken for å utføre handlinger basert på brukerinteraksjon.
For å installere Tkinter i systemet ditt, åpne en terminal og kjør:
pip installer tkinter
DateTime-modulen er en annen som er innebygd. Den tilbyr flere klasser som kan håndtere datoer, klokkeslett og tidsintervaller. Med denne modulen kan du bygge en hendelsesplanlegger, en vekkerklokke, en datokalkulator og en tidssoneapplikasjon.
Hvordan bygge en GUI-kalender ved hjelp av Python
Du kan finne kildekoden til GUI-kalenderen ved å bruke Python i denne GitHub-depot.
Begynn med å importere Tkinter, Kalender og DateTime-modulen. Definer en funksjon, printCalendar. Bruke få() metode på Spinbox (definert senere i koden) for å trekke ut måneden og året brukeren har valgt. Send disse verdiene til kalendermodulen for å få en formatert tekstkalender som representerer det angitte året og måneden. Denne teksten representerer et enkelt monospace rutenett, med dager ordnet i uker som starter på mandag.
Fjern alle eksisterende data fra skjermen. 1.0 indikerer begynnelsen av feltet, og slutt indikerer slutten av feltet. Til slutt setter du inn kalenderen generert tidligere og viser den på skjermen.
fra tkinter import *
import kalender
fra dato tid import Dato
defprintCalendar():
måned = int (month_box.get())
year = int (year_box.get())
output_calendar = kalender.måned (år, måned)
calendar_field.delete(1.0, 'slutt')
calendar_field.insert('slutt', output_calendar)
Definer en funksjon, nullstille. Slett innholdet på skjermen og still inn måneden og året til nåtiden og bruk config() metode for å vise den på skjermen.
defnullstille():
calendar_field.delete(1.0, 'slutt')
month_var.set (current_month)
year_var.set (current_year)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)
Definer en funksjon, lukk for å ødelegge vindusvisningen, og avslutt programmet.
defLukk():
guiWindow.destroy()
Initialiser Tkinter-forekomsten og vis rotvinduet. Angi tittelen, dimensjonene i piksler, og deaktiver størrelsen ved å beholde parameterne som 0.
hvis __navn__ == "__hoved__":
guiWindow = Tk()
guiWindow.title("GUI-kalender")
guiWindow.geometry('500x550')
guiWindow.resizable(0, 0)
Definer fire rammer for overskriftstittelen, måneds- og årsoppføringen, displayet og knappene. Den utfører funksjonen til en beholder, og styrer plasseringen av andre widgets. Den ordner oppsettet og gir polstring for disse widgetene ved å bruke rektangulære seksjoner på skjermen.
Organiser rammene i blokker før du plasserer dem i guivinduet ved hjelp av pakke() metode. Angi utvidelsesverdien til sann for å gjøre det mulig for widgeten å endre størrelse og utvide i tilgjengelig plass. Sett fylle attributt til begge for å la widgeten utvides for å okkupere hele vinduet i x- og y-retningen.
header_frame = Ramme (guiWindow)
entry_frame = Ramme (guiWindow)
result_frame = Ramme (guiWindow)
button_frame = Ramme (guiWindow)
header_frame.pack (expand=ekte, fyll="både")
entry_frame.pack (expand=ekte, fyll="både")
result_frame.pack (expand=ekte, fyll="både")
button_frame.pack (expand=ekte, fyll="både")
Angi tre etiketter for overskriften, måneden og året. Angi det overordnede vinduet du vil plassere det i, teksten det skal vise, skriftstilene sammen med skriftfargen. Pakk og plasser etikettene i en passende posisjon. Forbinder IntVar() med entry_frame for å angi og motta heltallsdata.
header_label = Etikett (header_frame, text="KALENDER",
font=('arial', '45', 'dristig'), fg="#A020F0")header_label.pack (expand=ekte, fyll="både")
month_label = Etikett (entry_frame, text="Måned:",
font=("arial", "20", "dristig"), fg="#000000")year_label = Etikett (entry_frame, text="År:",
font=("arial", "20", "dristig"), fg="#000000")
month_label.place (x=30, y=0)
year_label.place (x=275, y=0)
month_var = IntVar (entry_frame)
year_var = IntVar (entry_frame)
Få gjeldende måned, år og sett den til IntVar()-variabelen. Bruk Spinbox-widgeten til å spesifisere et verdiområde for brukeren. Angi verdiområdet Spinbox skal inneholde, bredden, gjeldende verdi den skal inneholde og skriftstilene. Plasser boksene riktig.
gjeldende_måned = date.today().month
gjeldende_år = dato.i dag().år
month_var.set (current_month)
year_var.set (current_year)month_box = Spinbox (entry_frame, from_=1, til=12, bredde="10",
textvariable=month_var, font=('arial','15'))year_box = Spinbox (entry_frame, from_=0000, til=3000, bredde="10",
textvariable=year_var, font=('arial','15'))
month_box.place (x=130, y=5)
year_box.place (x=360, y=5)
Angi et tekstfelt og angi dets overordnede vindu, bredde, høyde, skriftstil, 3D-animasjonsstil og kantbredde. Organiser tekstwidgeten og erklær tre knapper for å vise, tilbakestille og lukke vinduet. Knappene inneholder en ekstra bakgrunnsfargeegenskap og en kommandoegenskap.
Ved å bruke kommandoegenskapen kan du angi funksjonen den skal utføre når du har klikket. Plasser knappene på en enkelt rad med god plass mellom hver av dem.
calendar_field = Tekst (resultatramme, bredde=20, høyde=8,
font=("kurer", "18"), relief=RIDGE, borderwidth=2)calendar_field.pack()
display_button = Knapp (knappramme, tekst="VISE", bg="#A020F0",
fg="#E0FFFF", kommando=printCalendar, font=('arial', '15'))reset_button = Knapp (knappramme, tekst="NULLSTILLE", bg="#A020F0",
fg="#E0FFFF", command=reset, font=('arial','15'))close_button = Knapp (knappramme, tekst="LUKK", bg="#A020F0",
fg="#E0FFFF", kommando=lukk, font=('arial','15'))
display_button.place (x=55, y=0)
reset_button.place (x=210, y=0)
close_button.place (x=350, y=0)
De mainloop() funksjonen forteller Python å kjøre Tkinter-hendelsesløkken og lytte etter hendelser (for eksempel knappetrykk) til du lukker vinduet.
guiWindow.mainloop()
Sett sammen all koden for å se GUI-kalenderen din i aksjon.
Eksempelutgang fra GUI-kalenderen
Når du kjører programmet over, viser programmet et vindu med gjeldende måned og dato. Tilbakestill-knappen viser den samme skjermen når den klikkes.
Ved å sette måneden til 3 og året til 2000, viser programmet kalenderen for mars 2000. Når du trykker på Lukk-knappen, ødelegger programmet vinduet og stopper kjøringen.
Ta på deg noen GUI-prosjekter for nybegynnere ved å bruke Python
Å bygge GUI-applikasjoner har aldri vært så enklere. Pythons Tkinter-modul gir mange nyttige widgets som du kan tilpasse med svært lite kode. Sammen med dette får du tilgang til layout-managere som pack, grid og place to position elementer i henhold til ditt ønske.
Du kan bygge et skrivetestspill, fargepalett, valutaomregner eller kalkulator for å komme i gang. Disse applikasjonene er morsomme å bygge og vil utvikle dine objektorienterte programmeringsferdigheter med letthet.