基本的に私はこれをしたい:
ユーザーがボタンを押すと、アプリケーションはその中にスピナーを含むダイアログを開く必要がありますが、一部のタスクはバックグラウンドで実行されます。このタスクが終了したら、このダイアログを破棄し、新しいダイアログを開く必要があります。
私はpythonとgtkで作業しています
どうすればいいですか?ありがとう!
基本的には2つの方法があります。違いは、誰が「メイン」プログラムであるかです。gtk に担当させたい場合は、ダイアログを作成し、アイドル時に使用するコールバックを設定するだけです ( gobject.idle_add
)。このジョブは、すべてのステップに時間がかからないようにする必要があるため、gtk は GUI を更新できます (おそらくgobject.timeout_add
スピナーが必要です)。
もう1つの方法は、「バックグラウンド」ジョブが制御されていることです。必要なことを実行できます。時々 gtk を呼び出して ( while gtk.events_pending (): gtk.main_iteration (False)
)、gtk が GUI を更新できるようにする必要があります。