2017-10-13 92 views
-1

これはPythonバージョン3.6.2ですメソッド内でtkinterフレームを破棄する

以下は、Google NewのRSSフィードを通じてニュースを取得する方法です。私はフレームを削除しようとしているので、メソッドが再び呼び出されるとテキストが消去され、新しいテキストに置き換えられます。フレームを取り除くにはどうすればいいですか?私はそれを削除すると、5つだけのニュース記事は、お互いに積み重ねるのではなく、表示されるときに呼ばれます。私は現在、ボトムフレームを持っています。ボトム左フレーム、すべてのニュース記事ラベルを保持するニュースフレーム、およびすべての画像を含む新聞画像フレームがあります。私はNews Frameを削除しようとしています。私は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の新しい値を '.set'します。 –

+0

あなたの質問には質問はありません。あなたは欲しいものを言ったが、助けが必要なものは説明していない。 –

+0

ループを作成するたびに5つのラベルを作成してテキストを更新すると、管理が簡単になると思いますが、それは単なるメッセージです。現在、ループするたびに5つのラベルを作成していますが、残りのラベルはもう一度ループします。 – PWRxPSYCHO

答えて

0

プロジェクトのGUIです。私はこのようにした:

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

これは、ループ中に作成されたすべてのラベルを消去します。その後、ループが呼び出されると、古いラベルの代わりに新しいラベルが作成されます。

関連する問題