前提・実現したいこと
tkinterでツイッターのクライアントを作っています。
発生している問題・エラーメッセージ
×ボタンでプログラムを閉じると下記のエラーが出ます。
出ないようにするにはどうすればいいでしょうか?
File "C:\Users\user\Anaconda3\envs\py36\lib\tkinter\__init__.py", line 2293, in __init__ (widgetName, self._w) + extra + self._options(cnf)) RuntimeError: main thread is not in main loop
該当のソースコード
python
1import tweepy 2from tkinter import * 3from collections import deque 4 5class TimeLine(Frame, tweepy.StreamListener): 6 def __init__(self, master=None): 7 #donsumer keyなど 8 CK = "xxxxxxxx" 9 CS = "xxxxxxxx" 10 AT = "xxxxxxxx" 11 ATS = "xxxxxxxx" 12 13 Frame.__init__(self, master) 14 self.master.title('Time Line') 15 self.master.geometry("500x500") 16 17 self.auth = tweepy.OAuthHandler(CK, CS) 18 self.auth.set_access_token(AT, ATS) 19 self.mylistener = MyListener() 20 self.stream = tweepy.Stream(self.auth, self.mylistener) 21 22 self.label_d = deque() 23 self.stream.userstream(async=True) 24 25 26 #新しいツイートを上に表示 27 def make_tweet(self): 28 for n in range(len(self.label_d)): 29 self.label_d[n].grid(row=n, column=0) 30 31class MyListener(tweepy.StreamListener): 32 def on_status(self, status): 33 self.new_msg = status._json 34 self.tweet = '@' + self.new_msg['user']['screen_name'] + ' : ' +\ 35 self.new_msg['user']['name'] + '\n' + self.new_msg['text'] 36 #tkinterで表示できない文字を消す 37 self.chr_list = [self.tweet[j] for j in range(len(self.tweet)) \ 38 if ord(self.tweet[j]) in range(65536)] 39 self.tweet = '' 40 for i,j in enumerate(self.chr_list): 41 self.tweet = self.tweet + j 42 t.label_d.appendleft(Label(t, text=self.tweet, width=50)) 43 t.make_tweet() 44 45 def on_error(self, status_code): 46 print('Error occured: ' + str(status_code)) 47 48if __name__ == '__main__': 49 t = TimeLine() 50 t.pack() 51 t.mainloop()
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/06 07:00 編集