0

ユーザーがtkinter guiアプリのボタンを押したときにメッセージを表示したいのですが、プログラムは正常に動作します(ユーザー入力用のエントリタイプがあり、urllib2を使用して曲の歌詞を検索し、エントリ内のテキストを表示します)が、押された後urllib が要求を行うまでプログラムがフリーズするボタンで、メッセージを表示できません

これは、イベントをリッスンするボタンです

self.button = Button(text="search",padx=4, pady=4, command=self.get_lyric)
self.button.pack()

そして、そのイベントをリッスンするメソッド

def get_lyric(self):
    #LYRICS.COM
    self.feedback.config(text="loading...")

    site= str(self.get_googlesearch_link(self.input_text.get()))
    #print site
    page = urllib2.urlopen(site)
    soup = BeautifulSoup(page)
    main = soup.find(id="lyric_space")
    # show lyrics 

ラベルを付けてみましたが、urllib 応答の後にメッセージが表示されます。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

さまざまなアクションをスレッド化する必要があります。2 番目のアクションを実行するための新しいスレッドを作成しない限り、Python は一度に 1 つのアクションしか処理しません。

試す:

import thread

def button1():
    self.button = Button(text="search",padx=4, pady=4, command=self.get_lyric)
    self.button.pack()

def get_lyric(self):
    #LYRICS.COM
    self.feedback.config(text="loading...")

    site= str(self.get_googlesearch_link(self.input_text.get()))
    #print site
    page = urllib2.urlopen(site)
    soup = BeautifulSoup(page)
    main = soup.find(id="lyric_space")

thread.start_new_thread(button1, ())
thread.start_new_thread(get_lyrics, ())
于 2013-09-24T14:47:47.970 に答える