[tkinter] Ajouter un label chaque minute

Résolu

Bonjour,

Je voudrais faire apparaître la première ligne d'information pendant une minute, puis la 2ième, 3ième et ainsi de suite. Est-ce possible?

D'avance merci

import feedparser
from tkinter import *
from tkinter import Tk, ttk

master = Tk()
master.attributes('-fullscreen', True)
master.bind('<Escape>', lambda e: master.destroy())
master.config(background='black')
frm1 = LabelFrame(master, text='France 24', font='Arial 15', fg='WHITE', bg='black', height=200, relief=GROOVE)
frm1.place(x=320, y=100)

feed = feedparser.parse("http://www.france24.com/fr/france/rss")

for entry in feed.entries:
    info = Label(frm1, text=entry.title, font='Arial 16', fg='WHITE', bg='black')
    info.pack()
    # print(entry.title)

master.mainloop()


Windows / Chrome 104.0.0.0

6 réponses

  1. Bonjour,

    C'est bizarre de créer un label pour chaque ligne

    Ce serait plus sympa avec le widget Text

    Exemple:

    import feedparser
    from tkinter import *
    from tkinter import Tk, ttk
    
    master = Tk()
    master.attributes('-fullscreen', True)
    master.config(background='blue')
    
    display = Text(master, width = 100, height = 100)
    display.place(x = 10, y = 10)
    feed = feedparser.parse("http://www.france24.com/fr/france/rss")
    
    row = 0.0
    for entry in feed.entries:
        display.insert(row, entry.title+'\n')
        row+=5.0
    
    master.mainloop()
    
    0
    1. Ça fait partie d'un plus grand programme, plus facile pour la disposition, c'est une ébauche. Quand j'aurai obtenu le résultat que je souhaite, je ferais mieux. Je suis débutant.

      0
      1. Contributeur Ambassadeur

        bonjour,

        un exemple:

        from tkinter import *
        from tkinter import Tk, ttk
        
        master = Tk()
        master.attributes('-fullscreen', True)
        master.bind('<Escape>', lambda e: master.destroy())
        master.config(background='black')
        frm1 = LabelFrame(master, text='France 24', font='Arial 15', fg='WHITE', bg='black', height=200, relief=GROOVE)
        frm1.place(x=320, y=100)
        
        feed = ("un","deux","trois")
        def aff(info,feed,n):
            info.config(text=feed[n])
            if n+1<len(feed):
                n +=1
            else:
                n = 0
            info.after(2000,aff,info,feed,n)
        
        info = Label(frm1,  font='Arial 16', fg='WHITE', bg='black')
        info.pack()
        aff(info,feed,0)   # print(entry.title)
        
        master.mainloop()
        
        0
        1. Merci, je vais creuser la question, pour l'instant ça affiche 1,2,3

          Un grand merci

          0
          1. Contributeur Ambassadeur

            plus proche de ton exemple:

            import feedparser
            from tkinter import *
            from tkinter import Tk, ttk
            
            master = Tk()
            master.attributes('-fullscreen', True)
            master.bind('<Escape>', lambda e: master.destroy())
            master.config(background='black')
            frm1 = LabelFrame(master, text='France 24', font='Arial 15', fg='WHITE', bg='black', height=200, relief=GROOVE)
            frm1.place(x=320, y=100)
            
            feed = feedparser.parse("http://www.france24.com/fr/france/rss").entries
            def aff(inpho,pheed,n):
                inpho.config(text=pheed[n].title)
                if n+1<len(pheed):
                    n +=1
                else:
                    pheed = feedparser.parse("http://www.france24.com/fr/france/rss").entries
                    n = 0
                info.after(1000,aff,inpho,pheed,n)
            
            info = Label(frm1,  font='Arial 16', fg='WHITE', bg='black')
            info.pack()
            aff(info,feed,0)   
            master.mainloop()
            
            0
        2. Trop cool, MERCI exactement je que je voulais.

          Je vais étudier le code pour bien le comprendre.

          MERCI

          0