python歴一週間目の超初心者が
ネットから取得したデータを解析して延々とニュースを表示し続けるアプリを開発する試みです。
関数の使い方やTKの使い方を調べながら作っていたら二時間くらいかかりました。
C系の言語を使っているとスクリプト言語の書き方にはなかなか慣れずに苦悩しました。
main関数(だと思っている)流れの中に関数やクラスが定義できるぶっ飛び方に脱帽です
実行すると。。。うまく動いているようです
47都道府県別の新型コロナの情報が出てきたのにはちょっとびっくりしました。
途中までクラス化を意識して書いていたのですがよーわからんかったので
途中から構造体に切り替えてガチ手続き型で書き進めてしまった。
タイマーを実装するのにRepeat関数で再帰しているのがちょっとしたコツです。
次回はもう少しオブジェクト化するのと。Linux上で走らせてみようと思っています。
import feedparser
import tkinter
#変数宣言
datalist = []
timer = 0
#読み込み先定義
RSS_URL = 'https://www3.nhk.or.jp/rss/news/cat1.xml'
#データを格納する構造体
#一件の記事につき一つ生成するよー
class data_struct:
def __init__(self,argsnumber,argstitle,argssummary):
self.data_number = argsnumber #記事番号
self.data_title = argstitle #記事タイトル
self.data_summary = argssummary #記事本文
#タイマー関数
def Repeat():
global l_title
global l_summary
global timer
l_title["text"] = datalist[timer].data_title
l_summary["text"] = datalist[timer].data_summary
timer += 1
if datalist.count == timer:
timer = 0
root.after(5000,Repeat)
#xmlデータを取得
data = feedparser.parse(RSS_URL)
#構造体データ格納
count = 0
for entry in data.entries:
datalist.append(data_struct(count,entry.title,entry.summary))
count += 1
#メインウインドウ作成
root = tkinter.Tk()
#root.attributes('-fullscreen',True)
root.configure(bg='black')
#タイトルラベルと記事の内容
l_title = tkinter.Label(root)
l_summary= tkinter.Label(root)
#メインウインドウの設定
root.after(0,Repeat)
l_title.pack()
l_summary.pack()
root.mainloop()