次の問題を考えてみましょう: リスト (ストア) に Web サイトのコンテンツを表示する gtk / tk アプリがあります。以下のことを順番にやりたいと思います。
- ウィンドウを表示してダウンロードを開始する
- プログレスバーを表示する
- ダウンロードが完了したら、データをリスト(ストア)に追加します
これが条件です。ユーザーは、ダウンロード中にアプリを操作できる必要があります。これは、プログラムがダウンロード全体を通してウィンドウのメインループにあることを意味します。
機能しないもの:
- urllib.urlopen() は、ダウンロード全体が完了するまで待機します
- Popen() は、2 つのスレッド間で必要な通信を許可しません
ダウンロードが完了したことをプログラムにどのように通知するかが最大の問題です
とにかくTk/Gtkのためにイベント駆動型なので、シグナルを使用することもできます
これを解決する私の好ましい方法は、追加のシグナル「dl_done」を登録し、ダウンロードが完了したときにそのシグナルを gtk に送信することです。それは可能ですか?どんな提案でも大歓迎です!