Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. En savoir plus.

Construire un calendrier est un excellent moyen d'apprendre à créer des applications graphiques avec le module Tkinter de Python. Vous pouvez utiliser cette application pour gérer et planifier des événements à l'avance.

Pour aller plus loin, vous pouvez étendre l'application pour suivre les réunions à venir et définir des rappels. Vous pouvez même introduire une collaboration avec les calendriers d'autres utilisateurs pour éviter les conflits d'horaire.

Tout commence avec le squelette de base d'une application de calendrier GUI.

Les modules Calendar, Tkinter et DateTime

Pour créer le calendrier de l'interface graphique, vous utiliserez le calendrier, Tkinter et le module DateTime. Le Calendrier est livré avec Python et vous permet d'exécuter des actions liées à la date, au mois et au calendrier.

Tkinter vous permet de créer des applications de bureau

instagram viewer
. Il offre une variété de widgets, de bibliothèques utiles, d'objets canevas et d'analyseurs HTML/XML/PDF. Pour créer une application graphique, il vous suffit de :

  1. Importez la bibliothèque.
  2. Créer une fenêtre.
  3. Ajoutez des widgets à cette fenêtre.
  4. Appelez la boucle d'événements principale pour effectuer des actions basées sur l'interaction de l'utilisateur.

Pour installer Tkinter dans votre système, ouvrez un terminal et exécutez :

pip installer tkinter

Le module DateTime est un autre module intégré. Il propose plusieurs classes qui peuvent traiter des dates, des heures et des intervalles de temps. Avec ce module, vous pouvez créer un planificateur d'événements, un réveil, un calculateur de date et une application de fuseau horaire.

Comment créer un calendrier graphique à l'aide de Python

Vous pouvez trouver le code source du calendrier GUI en utilisant Python dans ce Référentiel GitHub.

Commencez par importer les modules Tkinter, Calendar et DateTime. Définir une fonction, printCalendrier. Utilisez le obtenir() sur la Spinbox (définie plus loin dans le code) pour extraire le mois et l'année que l'utilisateur a choisis. Transmettez ces valeurs au module de calendrier pour obtenir un calendrier texte formaté représentant l'année et le mois spécifiés. Ce texte représente une simple grille monospace, avec des jours organisés en semaines commençant le lundi.

Effacez toutes les données existantes de l'écran. 1.0 indique le début du champ, et fin indique la fin du champ. Enfin, insérez le calendrier généré précédemment et affichez-le à l'écran.

depuis tkinter importer *
importer calendrier
depuis date-heure importer date

définitivementprintCalendrier():
mois = int (month_box.get())
année = int (année_box.get())
output_calendar = calendar.month (année, mois)
calendrier_champ.delete(1.0, 'fin')
champ_calendrier.insert('fin', calendrier_sortie)

Définir une fonction, réinitialiser. Supprimez le contenu de l'écran et réglez le mois et l'année sur le présent et utilisez le config() méthode pour l'afficher à l'écran.

définitivementréinitialiser():
calendrier_champ.delete(1.0, 'fin')
month_var.set (current_month)
year_var.set (année_en_cours)
month_box.config (textvariable=month_var)
year_box.config (textvariable=year_var)

Définissez une fonction, fermez pour détruire l'affichage de la fenêtre et quittez le programme.

définitivementfermer():
guiWindow.destroy()

Initialisez l'instance de Tkinter et affichez la fenêtre racine. Définissez le titre, les dimensions en pixels et désactivez son redimensionnement en gardant les paramètres à 0.

si __nom__ == "__principal__":
guiWindow = Tk()
guiWindow.titre("Calendrier graphique")
guiWindow.geometry('500x550')
guiWindow.resizable(0, 0)

Définissez quatre cadres pour le titre de l'en-tête, l'entrée du mois et de l'année, l'affichage et les boutons. Il remplit la fonction d'un conteneur, dirigeant le placement d'autres widgets. Il organise la mise en page et fournit un rembourrage pour ces widgets en utilisant des sections rectangulaires à l'écran.

Organisez les cadres en blocs avant de les placer dans la fenêtre graphique à l'aide de la paquet() méthode. Définissez la valeur de expand sur true pour permettre au widget de se redimensionner et de se développer dans son espace disponible. Met le remplir attribut à la fois pour permettre au widget de s'étendre pour occuper toute la fenêtre dans les directions x et y.

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

header_frame.pack (expand=Vrai, remplir="les deux")
entry_frame.pack (expand=Vrai, remplir="les deux")
result_frame.pack (expand=Vrai, remplir="les deux")
button_frame.pack (développer=Vrai, remplir="les deux")

Spécifiez trois étiquettes pour l'en-tête, le mois et l'année. Définissez la fenêtre parente dans laquelle vous souhaitez la placer, le texte qu'elle affichera, les styles de police ainsi que la couleur de la police. Emballez et placez les étiquettes dans une position appropriée. Associé IntVar() avec le cadre_d'entrée pour définir et recevoir des données entières.

 header_label = Libellé (header_frame, text="CALENDRIER",
police=('arial', '45', 'gras'), fg="#A020F0")

header_label.pack (expand=Vrai, remplir="les deux")

month_label = Libellé (entry_frame, text="Mois:",
police=("arial", "20", "gras"), fg="#000000")

year_label = Libellé (entry_frame, text="Année:",
police=("arial", "20", "gras"), fg="#000000")

étiquette_mois.lieu (x=30, y=0)
année_étiquette.lieu (x=275, y=0)
month_var = IntVar (entry_frame)
year_var = IntVar (entry_frame)

Obtenez le mois et l'année en cours et définissez-les sur la variable IntVar(). Utilisez le widget Spinbox pour spécifier une plage de valeurs à l'utilisateur. Définissez la plage de valeurs que contiendra Spinbox, la largeur, la valeur actuelle qu'elle doit contenir et les styles de police. Positionnez les boîtes de manière appropriée.

 mois_courant = date.aujourd'hui().mois
année_en_cours = date.aujourd'hui().année
month_var.set (current_month)
year_var.set (année_en_cours)

month_box = Spinbox (entry_frame, from_=1, à=12, largeur="10",
textvariable=var_mois, font=('arial','15'))

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

month_box.place (x=130, y=5)
année_box.lieu (x=360, y=5)

Déclarez un champ de texte et définissez sa fenêtre parente, sa largeur, sa hauteur, son style de police, son style d'animation 3D et sa largeur de bordure. Organisez le widget de texte et déclarez trois boutons pour afficher, réinitialiser et fermer la fenêtre. Les boutons contiennent une propriété background-color supplémentaire et une propriété command.

En utilisant la propriété command, vous pouvez définir la fonction qu'il doit exécuter une fois cliqué. Placez les boutons sur une seule rangée avec suffisamment d'espace entre chacun d'eux.

 calendar_field = Texte (result_frame, width=20, hauteur=8,
police=("courrier", "18"), relief=RIDGE, borderwidth=2)

calendrier_champ.pack()

display_button = Bouton (button_frame, text="AFFICHER", bg="#A020F0",
fg="#E0FFFF", commande=printCalendar, police=('arial', '15'))

reset_button = Bouton (button_frame, text="RÉINITIALISER", bg="#A020F0",
fg="#E0FFFF", commande=réinitialiser, police=('arial','15'))

close_button = Bouton (button_frame, text="FERMER", bg="#A020F0",
fg="#E0FFFF", commande=fermer, police=('arial','15'))

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

Le boucle principale() La fonction indique à Python d'exécuter la boucle d'événements Tkinter et d'écouter les événements (tels que les pressions sur les boutons) jusqu'à ce que vous fermiez la fenêtre.

 guiWindow.mainloop()

Rassemblez tout le code pour voir votre calendrier GUI en action.

Exemple de sortie du calendrier GUI

Lors de l'exécution du programme ci-dessus, le programme affiche une fenêtre avec le mois et la date en cours. Le bouton Réinitialiser affiche le même écran lorsqu'il est cliqué.

En réglant le mois sur 3 et l'année sur 2000, le programme affiche le calendrier de mars 2000. En appuyant sur le bouton Fermer, le programme détruit la fenêtre et arrête son exécution.

Prenez en charge des projets d'interface graphique pour débutants à l'aide de Python

Créer des applications GUI n'a jamais été aussi facile. Le module Tkinter de Python fournit de nombreux widgets utiles que vous pouvez entièrement personnaliser avec très peu de code. Parallèlement à cela, vous avez accès à des gestionnaires de mise en page tels que pack, grid et place pour positionner les éléments selon votre désir.

Vous pouvez créer un jeu de test de dactylographie, une palette de couleurs, un convertisseur de devises ou une calculatrice pour commencer. Ces applications sont amusantes à construire et développeront facilement vos compétences en programmation orientée objet.