Solution
import tkinter as tk
from tkinter import ttk
import tkinter.scrolledtext as st
from tkinter import messagebox
from datetime import date, timedelta
numjour=4
class App(tk.Tk):
def __init__(self):
super(App, self).__init__()
self.title("Tkinter Label Frame")
self.minsize(500,300)
# Créer un labelFrame
self.labelFrame = ttk.LabelFrame(self, text = "Afficher les jours de l'année")
self.labelFrame.grid(column = 0, row = 0, padx = 20, pady = 10)
self.ComboboxJours()
self.EntAnnee()
self.btn()
self.ScrolledText()
def callback(self,even=None):
global numjour
numjour=int(self.choix.current())
if self.choix.get() == "Lundi" : numjour=0
messagebox.showinfo("Title", str(numjour))
# Créer combobox des jours de la semaine
def ComboboxJours(self):
ttk.Label(self.labelFrame, text = "Choisir un jour").grid(column=2, row=1, sticky = tk.W)
lesJours = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche']
self.choix = ttk.Combobox(self.labelFrame,
values=lesJours)
self.choix.grid(column=3, row=1)
self.choix.bind("<<ComboboxSelected>>", self.callback)
# Créer zone de saisie
def EntAnnee(self):
self.entryVariable = tk.StringVar()
ttk.Label(self.labelFrame, text = "Saisir une année").grid(column=0, row=1, sticky = tk.W)
self.Entry = ttk.Entry(self.labelFrame,textvariable=self.entryVariable).grid(column=1, row=1, sticky = tk.W)
# Créer les boutons
def btn(self):
ttk.Button(self.labelFrame, text="Quitter",width=20,
command=self.destroy).grid(column=3, row=10,pady=50, sticky = tk.W)
ttk.Button(self.labelFrame, text="Afficher",width=20,
command=self.TousJours).grid(columnspan=4, row=3,pady=20)
def joursem(self,D):
return ('Lundi', 'Mardi', 'Mercredi', 'Jeudi',
'Vendredi', 'Samedi', 'Dimanche')[int(D)-1]
def Mois(self,D):
return ('Janvier','Fevrier','Mars','Avril','Mai',
'Juin','Juillet','Août','Septembre','Octobre',
'Novembre','Decembre')[int(D)-1]
def TousJours(self):
# 1er janvier de l'année donnée
year=self.entryVariable.get()
AnneeEnCour = date.today().year
dt = date(int(year), 1, 1)
# Premier vendredi de l'année donnée
messagebox.showinfo("Title", numjour)
dt += timedelta(days = numjour - dt.weekday())
list1=[]
#ttk.Entry(self.labelFrame, width=100).grid(columnspan=4, row=4,pady=20)
# disabling the state
text_area = st.ScrolledText(self.labelFrame,
width = 40,
height = 8,
font = ("Times New Roman",
15))
text_area.grid(columnspan = 4,row=5, pady = 10, padx = 10)
# Inserting Text which is read only
i=1
while int(dt.year) == int(year):
#yield int(dt)
text_area.insert(tk.INSERT,str(i)+ " - " + self.joursem(dt.strftime("%w"))
+ ' le ' + dt.strftime("%d") + " "
+ self.Mois(dt.strftime("%m"))
+ " " + dt.strftime("%Y")+"\n")
dt += timedelta(days = 7)
i=i+1
# Making the text read only
text_area.configure(state ='disabled')
# Créer la liste d'affichage
def ScrolledText(self):
text_area = st.ScrolledText(self.labelFrame,
width = 40,
height = 8,
font = ("Times New Roman",
15))
text_area.grid(columnspan = 4,row=5, pady = 10, padx = 10)
# Inserting Text which is read only
text_area.configure(state ='disabled')
if __name__ == "__main__":
app = App()
app.title("Affichage des jours !")
app.mainloop()