Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission. Læs mere.

At bygge en kalender er en fantastisk måde at lære om oprettelse af GUI-applikationer med Pythons Tkinter-modul. Du kan bruge denne applikation til at administrere og planlægge begivenheder på forhånd.

Hvis du tager det videre, kan du udvide appen til at spore kommende møder og indstille påmindelser. Du kan endda indføre samarbejde med andre brugeres kalendere for at undgå planlægningskonflikter.

Det hele begynder med det grundlæggende skelet i en GUI-kalender-app.

Kalender-, Tkinter- og DateTime-modulerne

For at bygge GUI-kalenderen skal du bruge kalenderen, Tkinter og DateTime-modulet. Det Kalender modul leveres med Python og giver dig mulighed for at udføre dato-, måned- og kalenderrelaterede handlinger.

Tkinter giver dig mulighed for at oprette desktop-applikationer. Det tilbyder en række widgets, nyttige biblioteker, lærredsobjekter og HTML/XML/PDF-parsere. For at bygge en GUI-applikation skal du blot:

instagram viewer
  1. Importer biblioteket.
  2. Opret et vindue.
  3. Tilføj widgets til det vindue.
  4. Kald hovedhændelsesløkken for at udføre handlinger baseret på brugerinteraktion.

For at installere Tkinter i dit system skal du åbne en terminal og køre:

pip installer tkinter

DateTime-modulet er et andet, der er indbygget. Det tilbyder flere klasser, der kan omhandle datoer, tidspunkter og tidsintervaller. Med dette modul kan du bygge en begivenhedsplanlægger, et vækkeur, en datoberegner og en tidszoneapplikation.

Sådan bygger du en GUI-kalender ved hjælp af Python

Du kan finde kildekoden til GUI-kalenderen ved hjælp af Python i denne GitHub-depot.

Begynd med at importere Tkinter, Kalender og DateTime-modulet. Definer en funktion, printKalender. Brug få() metode på Spinbox (defineret senere i koden) for at udtrække den måned og det år, brugeren har valgt. Send disse værdier til kalendermodulet for at få en formateret tekstkalender, der repræsenterer det angivne år og måned. Denne tekst repræsenterer et simpelt monospace-gitter med dage arrangeret i uger, der starter på mandag.

Ryd alle eksisterende data fra skærmen. 1.0 angiver begyndelsen af ​​feltet, og ende angiver slutningen af ​​feltet. Indsæt endelig den tidligere genererede kalender og vis den på skærmen.

fra tkinter importere *
importere kalender
fra dato tid importere dato

defprintKalender():
måned = int (month_box.get())
år = int (year_box.get())
output_calendar = kalender.måned (år, måned)
calendar_field.delete(1.0, 'ende')
calendar_field.insert('ende', output_kalender)

Definer en funktion, Nulstil. Slet indholdet på skærmen og indstil måneden og året til nutiden og brug config() metode til at vise det på skærmen.

defNulstil():
calendar_field.delete(1.0, 'ende')
month_var.set (current_month)
year_var.set (current_year)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)

Definer en funktion, luk for at ødelægge vinduesvisningen, og afslut programmet.

deftæt():
guiWindow.destroy()

Initialiser Tkinter-forekomsten og vis rodvinduet. Indstil titlen, dimensionerne i pixels, og deaktiver dens størrelsesændring ved at beholde parametrene som 0.

hvis __navn__ == "__main__":
guiWindow = Tk()
guiWindow.title("GUI-kalender")
guiWindow.geometry('500x550')
guiWindow.resizable(0, 0)

Definer fire rammer for overskriftstitlen, måned og år, displayet og knapperne. Den udfører funktionen som en beholder og styrer placeringen af ​​andre widgets. Det arrangerer layoutet og giver polstring til disse widgets ved hjælp af rektangulære sektioner på skærmen.

Organiser rammerne i blokke, før du placerer dem i guivinduet ved hjælp af pakke() metode. Indstil værdien af ​​expand til sand for at gøre det muligt for widgetten at ændre størrelse og udvide i dens tilgængelige plads. Indstil fylde attribut til begge for at tillade widgetten at udvide sig til at optage 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=Rigtigt, fyld="begge")
entry_frame.pack (expand=Rigtigt, fyld="begge")
result_frame.pack (expand=Rigtigt, fyld="begge")
button_frame.pack (expand=Rigtigt, fyld="begge")

Angiv tre etiketter for overskriften, måneden og året. Indstil det overordnede vindue, du vil placere det i, den tekst, det vil vise, skrifttypestilene sammen med skriftfarven. Pak og placer etiketterne i en passende position. Associeret IntVar() med entry_frame at indstille og modtage heltalsdata.

 header_label = Etiket (header_frame, text="KALENDER",
skrifttype=('Arial', '45', 'fremhævet'), fg="#A020F0")

header_label.pack (expand=Rigtigt, fyld="begge")

month_label = Etiket (entry_frame, text="Måned:",
skrifttype=("arial", "20", "fremhævet"), fg="#000000")

year_label = Etiket (entry_frame, text="År:",
skrifttype=("arial", "20", "fremhævet"), 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)

Hent den aktuelle måned, år og indstil den til IntVar()-variablen. Brug Spinbox-widgetten til at angive en række værdier til brugeren. Indstil rækken af ​​værdier, som Spinbox skal indeholde, bredden, den aktuelle værdi, den skal indeholde, og skrifttypestilene. Placer kasserne korrekt.

 nuværende_måned = dato.i dag().måned
nuværende_å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",
tekstvariabel=år_var, skrifttype=('Arial','15'))

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

Deklarer et tekstfelt, og indstil dets overordnede vindue, bredde, højde, skrifttypestil, 3D-animationsstil og kantbredde. Organiser tekstwidgetten, og angiv tre knapper til at vise, nulstille og lukke vinduet. Knapperne indeholder en ekstra baggrundsfarveegenskab og en kommandoegenskab.

Ved hjælp af kommandoegenskaben kan du indstille den funktion, den skal udføre, når du har klikket på den. Placer knapperne i en enkelt række med rigelig plads mellem hver af dem.

 calendar_field = Tekst (resultatramme, bredde=20, højde=8,
skrifttype=("kurer", "18"), relief=RIDGE, borderwidth=2)

calendar_field.pack()

display_button = Knap (knapramme, tekst="SKÆRM", bg="#A020F0",
fg="#E0FFFF", kommando=printCalendar, font=('Arial', '15'))

reset_button = Knap (knapramme, tekst="NULSTIL", bg="#A020F0",
fg="#E0FFFF", kommando=nulstil, skrifttype=('Arial','15'))

close_button = Knap (knapramme, tekst="TÆT", bg="#A020F0",
fg="#E0FFFF", kommando=luk, skrifttype=('Arial','15'))

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

Det mainloop() funktion fortæller Python at køre Tkinter-hændelsesløkken og lytte efter hændelser (såsom knaptryk), indtil du lukker vinduet.

 guiWindow.mainloop()

Sæt al koden sammen for at se din GUI-kalender i aktion.

Eksempeloutput fra GUI-kalenderen

Når programmet kører ovenover, viser programmet et vindue med den aktuelle måned og dato. Nulstil-knappen viser den samme skærm, når der klikkes på den.

Ved at indstille måneden til 3 og året til 2000, viser programmet kalenderen for marts 2000. Når du trykker på knappen Luk, ødelægger programmet vinduet og stopper dets udførelse.

Tag nogle GUI-projekter for begyndere ved hjælp af Python

Det har aldrig været så nemmere at bygge GUI-applikationer. Pythons Tkinter-modul giver mange nyttige widgets, som du fuldt ud kan tilpasse med meget lidt kode. Sammen med dette får du adgang til layoutmanagere som pack, grid og place for at placere elementer efter dit ønske.

Du kan bygge et skrivetestspil, farvepalet, valutaomregner eller lommeregner for at komme i gang. Disse applikationer er sjove at bygge og vil udvikle dine objektorienterede programmeringsfærdigheder med lethed.