2017-10-13 5 views
-1

Ceci est la version Python 3.6.2Détruire le cadre tkinter dans la méthode

Voici ma méthode pour obtenir des nouvelles via le fil RSS de Google New. J'essaie de supprimer le cadre de sorte que lorsque la méthode est rappelée, le texte est effacé et remplacé par un nouveau texte. Comment ferais-je pour enlever le cadre? Je voudrais le supprimer de sorte que quand il est appelé seulement 5 articles de nouvelles sont affichés au lieu de s'empiler les uns sur les autres. J'ai actuellement un cadre inférieur et à l'intérieur que j'ai un cadre en bas à gauche, un cadre de nouvelles qui contient toutes les étiquettes d'article de nouvelles, et un cadre d'image de journal, qui contient toutes les images. J'essaye de supprimer le News Frame alors quand j'appelle ma méthode get_news c'est un nouveau cadre sans étiquette. Toute aide serait appréciée. Ceci est l'interface graphique du projet

def get_news(): 
    try: 
     feed = feedparser.parse(google_news_url) 

     for post in feed.entries[0:5]: 
      newspaper_image = Label(frame_newspaper, bg='black', fg='white') 
      newspaper_image.configure(image=photo) 
      newspaper_image.icon = photo 

      label_news = Label(frame_news, bg='black', fg='white', font=newsFont) 
      label_news['text'] = post['title'] 
      newspaper_image.pack(side=TOP, anchor=W) 
      label_news.pack(side=TOP, anchor=W) 
     frame_news.after(600000, get_news) 

    except Exception as e: 
     traceback.print_exc() 
     print("Error: %s. Cannot get news." % e) 
+4

Je vous suggère de ne pas détruire et de reconstruire le cadre, il suffit de mettre à jour son contenu. Vous pouvez changer le texte/l'image dans un label en appelant sa méthode '.config'. Ou associez un StringVar au Label, et '.set' une nouvelle valeur à ce StringVar. –

+0

Votre question ne comprend pas de question. Vous avez dit ce que vous voulez, mais n'avez pas expliqué ce que vous avez besoin d'aide. –

+0

Je pense que si je fais juste 5 étiquettes et que je mets à jour le texte à chaque fois que je fais une boucle, ce serait plus facile à gérer, mais c'est juste plus compliqué. Actuellement je fais 5 étiquettes à chaque fois que je boucle mais elles restent et je fais 5 étiquettes de plus quand je boucle à nouveau. – PWRxPSYCHO

Répondre

0

Au début de la méthode que vous devez obtenir les enfants des cadres et de les détruire. Je l'ai fait comme ceci:

for widget in frame_news.winfo_children(): 
     widget.destroy() 
    for i in frame_newspaper.winfo_children(): 
     i.destroy() 

Ceci efface toutes les étiquettes qui ont été créées pendant la boucle. Ensuite, lorsque la boucle est appelée, de nouvelles étiquettes sont créées en remplacement des anciennes.