破坏方法内的tkinter帧

问题描述:

这是Python版本3.6.2破坏方法内的tkinter帧

以下是我通过Google New的RSS提要获取新闻的方法。我正在尝试删除该框架,以便在再次调用该方法时,文本将被删除并替换为新文本。我将如何去除框架?我想删除它,所以当它被称为只有5篇新闻文章显示,而不是堆叠在一起。我目前有一个底部框架,里面有一个左下框架,一个新闻框架,它包含所有新闻文章标签,还有一个报纸图片框架,其中包含所有图片。我试图删除新闻框架,所以当我打电话给我的get_news方法时,这是一个没有标签的新框架。任何帮助,将不胜感激。这是该项目

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

我建议你不要销毁和重建框架,只更新其内容。您可以通过调用它的'.config'方法来更改标签中的文本/图像。或者将一个StringVar与Label关联起来,并为这个StringVar赋一个新的值。 –

+0

您的问题不包括问题。你说了你想要的,但没有解释你需要帮助。 –

+0

我认为如果我只是制作5个标签,然后每次循环更新文本时都会更容易管理,但它只是更加混乱。目前,我每次循环制作5个标签,但它们仍然存在,我再次循环制作5个标签。 – PWRxPSYCHO

在你必须得到帧的儿童,摧毁他们的方法开始的GUI。我这样做:

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

这将清除循环过程中创建的所有标签。然后,当循环被调用时,将创建新的标签来代替旧的标签。