Het bouwen van een kalender is een geweldige manier om te leren over het maken van GUI-applicaties met de Tkinter-module van Python. U kunt deze applicatie gebruiken om evenementen van tevoren te beheren en te plannen.
Als u nog verder gaat, kunt u de app uitbreiden om aankomende vergaderingen bij te houden en herinneringen in te stellen. U kunt zelfs samenwerking met de agenda's van andere gebruikers introduceren om planningsconflicten te voorkomen.
Het begint allemaal met het basisskelet van een GUI Agenda-app.
De kalender-, Tkinter- en DateTime-modules
Om de GUI-kalender te bouwen, gebruikt u de kalender, Tkinter en de DateTime-module. De Kalender module wordt geleverd met Python en stelt u in staat om datum-, maand- en kalendergerelateerde acties uit te voeren.
Met Tkinter kunt u desktop-applicaties maken. Het biedt een verscheidenheid aan widgets, handige bibliotheken, canvasobjecten en HTML/XML/PDF-parsers. Om een GUI-applicatie te bouwen, hoeft u alleen maar het volgende te doen:
- Importeer de bibliotheek.
- Maak een venster.
- Voeg widgets toe aan dat venster.
- Roep de hoofdgebeurtenislus aan om acties uit te voeren op basis van gebruikersinteractie.
Om Tkinter in uw systeem te installeren, opent u een terminal en voert u het volgende uit:
pip installeer tkinter
De DateTime-module is een andere die is ingebouwd. Het biedt verschillende klassen die kunnen omgaan met datums, tijden en tijdsintervallen. Met deze module kunt u een evenementenplanner bouwen, een wekker, een datumcalculator en een tijdzone-applicatie.
Hoe een GUI-kalender te bouwen met behulp van Python
Hierin vind je de broncode van de GUI Calendar mbv Python GitHub-opslagplaats.
Begin met het importeren van de module Tkinter, Calendar en DateTime. Definieer een functie, afdrukKalender. Gebruik de krijgen() methode op de Spinbox (later gedefinieerd in de code) om de maand en het jaar te extraheren die de gebruiker heeft gekozen. Geef deze waarden door aan de kalendermodule om een opgemaakte tekstkalender te krijgen die het opgegeven jaar en de opgegeven maand vertegenwoordigt. Deze tekst vertegenwoordigt een eenvoudig monospace-raster, met dagen gerangschikt in weken die beginnen op maandag.
Wis alle bestaande gegevens van het scherm. 1.0 geeft het begin van het veld aan, en einde geeft het einde van het veld aan. Voeg ten slotte de eerder gegenereerde kalender in en geef deze weer op het scherm.
van tkinter importeren *
importeren kalender
van datum Tijd importeren datum
defafdrukKalender():
maand = int (maand_box.get())
jaar = int (jaar_box.get())
output_calendar = kalender.maand (jaar, maand)
kalenderveld.verwijderen(1.0, 'einde')
kalenderveld.insert('einde', output_calendar)
Definieer een functie, resetten. Wis de inhoud op het scherm en stel de maand en het jaar in op het heden en gebruik de configuratie() methode om het op het scherm weer te geven.
defresetten():
kalenderveld.verwijderen(1.0, 'einde')
maand_var.set (huidige_maand)
year_var.set (huidig_jaar)
maand_box.config (tekstvariabele=maand_var)
jaar_box.config (tekstvariabele=jaar_var)
Definieer een functie, sluit om de vensterweergave te vernietigen en sluit het programma af.
defdichtbij():
guiWindow.vernietigen()
Initialiseer de Tkinter-instantie en geef het hoofdvenster weer. Stel de titel, de afmetingen in pixels in en schakel het wijzigen van de grootte uit door de parameters op 0 te houden.
als __naam__ == "__voornaamst__":
guiWindow = Tk()
guiWindow.titel("GUI-kalender")
guiWindow.geometry('500x550')
guiWindow.aanpasbaar(0, 0)
Definieer vier kaders voor de koptitel, de maand- en jaarinvoer, het display en de knoppen. Het vervult de functie van een container en stuurt de plaatsing van andere widgets aan. Het regelt de lay-out en biedt opvulling voor deze widgets met behulp van rechthoekige secties op het scherm.
Organiseer de frames in blokken voordat u ze in het guivenster plaatst met behulp van de pak() methode. Stel de waarde van expand in op true om de widget in staat te stellen het formaat aan te passen en uit te breiden in de beschikbare ruimte. Stel de vullen attribuut aan beide toe om de widget uit te breiden om het hele venster in de x- en y-richting te bezetten.
header_frame = Frame (guiWindow)
entry_frame = Frame (guiWindow)
result_frame = Frame (guiWindow)
button_frame = Frame (guiWindow)
header_frame.pack (uitvouwen=WAAR, vullen="beide")
entry_frame.pack (uitvouwen=WAAR, vullen="beide")
result_frame.pack (uitvouwen=WAAR, vullen="beide")
button_frame.pack (uitvouwen=WAAR, vullen="beide")
Geef drie labels op voor de koptekst, maand en jaar. Stel het bovenliggende venster in waarin u het wilt plaatsen, de tekst die het zal weergeven, de lettertypestijlen en de lettertypekleur. Verpak en plaats de etiketten op de juiste plaats. Associëren IntVar() met de binnenkomst_frame om gehele gegevens in te stellen en te ontvangen.
header_label = Label (header_frame, tekst="KALENDER",
lettertype=('arieel', '45', 'vetgedrukt'), fg="#A020F0")header_label.pack (uitvouwen=WAAR, vullen="beide")
month_label = Label (entry_frame, text="Maand:",
lettertype=("arieel", "20", "vetgedrukt"), fg="#000000")year_label = Label (invoerframe, tekst="Jaar:",
lettertype=("arieel", "20", "vetgedrukt"), fg="#000000")
maand_label.plaats (x=30, j=0)
jaar_label.plaats (x=275, j=0)
maand_var = IntVar (invoer_frame)
year_var = IntVar (entry_frame)
Haal de huidige maand en het huidige jaar op en stel deze in op de variabele IntVar(). Gebruik de Spinbox-widget om een reeks waarden voor de gebruiker op te geven. Stel het waardenbereik in dat de Spinbox zal bevatten, de breedte, de huidige waarde die het moet bevatten en de lettertypestijlen. Plaats de dozen op de juiste manier.
huidige_maand = datum.vandaag().maand
huidig_jaar = datum.vandaag().jaar
maand_var.set (huidige_maand)
year_var.set (huidig_jaar)month_box = Spinbox (entry_frame, from_=1, naar=12, breedte="10",
tekstvariabele=maand_var, font=('arieel','15'))year_box = Spinbox (entry_frame, from_=0000, naar=3000, breedte="10",
tekstvariabele=year_var, font=('arieel','15'))
maand_box.plaats (x=130, j=5)
jaar_doos.plaats (x=360, j=5)
Declareer een tekstveld en stel het bovenliggende venster, de breedte, hoogte, lettertypestijl, 3D-animatiestijl en randbreedte in. Organiseer de tekstwidget en declareer drie knoppen om het venster weer te geven, opnieuw in te stellen en te sluiten. De knoppen bevatten een extra eigenschap voor de achtergrondkleur en een opdrachteigenschap.
Met behulp van de eigenschap command kunt u de functie instellen die moet worden uitgevoerd zodra erop is geklikt. Plaats de knoppen in een enkele rij met voldoende ruimte ertussen.
calendar_field = Tekst (resultaat_frame, breedte=20, hoogte=8,
lettertype=("koerier", "18"), reliëf=RIDGE, grensbreedte=2)kalender_veld.pack()
display_button = Knop (button_frame, text="WEERGAVE", bg="#A020F0",
fg="#E0FFFF", commando=printCalendar, font=('arieel', '15'))reset_button = Knop (button_frame, text="RESETTEN", bg="#A020F0",
fg="#E0FFFF", commando=reset, lettertype=('arieel','15'))close_button = Knop (button_frame, text="DICHTBIJ", bg="#A020F0",
fg="#E0FFFF", commando=sluiten, lettertype=('arieel','15'))
display_button.place (x=55, j=0)
reset_button.plaats (x=210, j=0)
close_button.place (x=350, j=0)
De Hoofdlus() functie vertelt Python om de Tkinter-gebeurtenislus uit te voeren en te luisteren naar gebeurtenissen (zoals het indrukken van knoppen) totdat u het venster sluit.
guiWindow.mainloop()
Voeg alle code samen om uw GUI-kalender in actie te zien.
Voorbeelduitvoer van de GUI-kalender
Bij het uitvoeren van het bovenstaande programma geeft het programma een venster weer met de huidige maand en datum. De knop Opnieuw instellen geeft hetzelfde scherm weer wanneer erop wordt geklikt.
Bij het instellen van de maand op 3 en het jaar op 2000, toont het programma de kalender voor maart 2000. Door op de knop Sluiten te drukken, vernietigt het programma het venster en stopt de uitvoering ervan.
Voer enkele GUI-projecten voor beginners uit met Python
Het bouwen van GUI-applicaties is nog nooit zo eenvoudig geweest. De Tkinter-module van Python biedt veel handige widgets die je met heel weinig code volledig kunt aanpassen. Daarnaast krijgt u toegang tot lay-outmanagers zoals pack, grid en place om elementen naar wens te positioneren.
U kunt een typetestspel, kleurenpalet, valuta-omzetter of rekenmachine bouwen om aan de slag te gaan. Deze applicaties zijn leuk om te bouwen en zullen uw objectgeoriënteerde programmeervaardigheden met gemak ontwikkelen.