破坏方法内的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)
答
在你必须得到帧的儿童,摧毁他们的方法开始的GUI。我这样做:
for widget in frame_news.winfo_children():
widget.destroy()
for i in frame_newspaper.winfo_children():
i.destroy()
这将清除循环过程中创建的所有标签。然后,当循环被调用时,将创建新的标签来代替旧的标签。
我建议你不要销毁和重建框架,只更新其内容。您可以通过调用它的'.config'方法来更改标签中的文本/图像。或者将一个StringVar与Label关联起来,并为这个StringVar赋一个新的值。 –
您的问题不包括问题。你说了你想要的,但没有解释你需要帮助。 –
我认为如果我只是制作5个标签,然后每次循环更新文本时都会更容易管理,但它只是更加混乱。目前,我每次循环制作5个标签,但它们仍然存在,我再次循环制作5个标签。 – PWRxPSYCHO