Mise à jour d'un label en Tk

Fermé
tatal21820 Messages postés 35 Date d'inscription vendredi 6 mai 2022 Statut Membre Dernière intervention 2 septembre 2023 - Modifié le 12 sept. 2022 à 19:32
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 - 13 sept. 2022 à 17:19

Bonjour à tous,

Voici un petit programme qui affiche mes rendez-vous à partir d'un calendrier google.

import locale
import urllib.request
from datetime import timedelta, datetime
from tkinter import *
import icalendar
import pytz
import recurring_ical_events

INTERVAL = 2000

URL = "https://calendar.google.com/calendar/ical/********gmail.com/private-*****************" \
      "/basic.ics"
master = Tk()
locale.setlocale(locale.LC_ALL, "fr_FR")
# master.attributes("-fullscreen", True)
# master.bind("<Escape>", lambda e: master.destroy())
master.config(background="black")
master.geometry("750x500")
frm5 = LabelFrame(master, text="Tatal", font="helvetica 15", fg="WHITE", bg="black", height=800, relief=GROOVE)
frm5.place(x=20, y=10, width=500)


def task():
    # Agenda Tatal
    dat2 = datetime.now(pytz.timezone("Europe/Paris"))
    start_date = dat2.date()
    end_date = start_date + timedelta(days=2)

    ical_string = urllib.request.urlopen(URL).read()
    calendar = icalendar.Calendar.from_ical(ical_string)
    events = recurring_ical_events.of(calendar).between(start_date, end_date)

    for event in events:
        start = event["DTSTART"].dt
        duration = event["DTEND"].dt - event["DTSTART"].dt
        nom = event["SUMMARY"]
        demain = event["DTSTART"].dt + timedelta(days=1)
        if start == demain:
            print(nom + "Demain" + start.strftime("%Hh%M"))
        if start == dat2:
            print(nom + "Aujourdhui" + start.strftime("%Hh%M"))
        agd_tatal = Label(frm5, text=nom + "  " + start.strftime("%A %d %B %Hh%M"), font="Arial 16", fg="WHITE",
                              bg="black")
        agd_tatal.pack(padx=10, pady=10)

    if not events:
        agd_tatal = Label(frm5, text="Aucun rendez-vous aujourdhui", font="Arial 12", fg="WHITE", bg="black")
        agd_tatal.pack(padx=10, pady=10)

    # Re-run this task in INTERVAL milliseconds
    master.after(INTERVAL, task)


master.after(INTERVAL, task)
master.mainloop()

# if __name__ == "__main__":

J'ai deux problèmes :

  1. À chaque demande (toutes les 2 secondes) le Label n'efface pas les anciennes demandes.
  2. Les conditions "aujourd'hui" et "demain" ne fonctionnent pas.

Aidez-moi s'il vous plaît (le plus important c'est le Label).

D'avance merci

A voir également:

2 réponses

yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 551
11 sept. 2022 à 08:08

bonjour,

en lignes 42 et 47, tu ajoutes un label, et tu n'en supprimes jamais.

pour supprimer tous les labels:

    for l in frm5.winfo_children():
        l.destroy()
0
tatal21820 Messages postés 35 Date d'inscription vendredi 6 mai 2022 Statut Membre Dernière intervention 2 septembre 2023
13 sept. 2022 à 13:59

Merci beaucoup, mais à quel endroit je dois le placer? j'ai essayé en ligne 32 et 49 sa ne fonctionne pas.

0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 1 551
13 sept. 2022 à 17:19

32 me semble bien, dans task() avant le for.

0