試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

PyGTKでのプログレスバーについて(大まかな使い方)

何かの作業(もしくは複数の作業による全体の流れ)の進行状況をバーの形で視覚的に表現するのがプログレスバーというGUI部品(ウィジェット)。
ここでは、その使い方についてのメモをする。
以下、「メンバ関数」と表記するものはgtk.ProgressBarオブジェクトのメンバ関数を示す。

進行状況を通知する

メンバ関数set_fraction()引数に0から1までの間の値を入れる。例えば、10%では「0.1」、25%では「0.25」などとなる。「1」を入れると完全に満たされた状態になる。
現在の値はget_fraction()で取り出せる。

文字列の表示

プログレスバー上に文字列を表示し、処理中の具体的な数値などを同時に知らせることができる。メンバ関係set_text()を使用する。
現在の文字列はget_text()で取り出せる。

全体の処理量が不明で割合が分からない場合

どこまで処理が進んでいるのか分からないとき、set_fraction()の代わりにメンバ関係pulse()を呼ぶと、アクティビティ・モードという状態になり、繰り返しpulse()が呼ばれる度に左右に四角が少し移動していく。この四角は往復移動する。
そのときの移動幅はset_pulse_step()で0から1までの値を指定することで変更できる。
なお、set_fraction()が呼ばれると通常のモードに戻る。

方向

メンバ関数set_orientation()方向を示す値を指定することで、バーの進む方向を変更できる。

簡単な例

チュートリアルにサンプルがある。これは、0.1秒ごとに1%分ずつ自動的にバーが進む(10秒で100%になって0に戻る)もので、チェックボックスにより表示のスタイルをいじることもできる。

重い処理で実際に使うと...

先ほどのサンプルでは重い処理をさせていないので特に問題はないのだが、何か重い処理を実際にさせながら使ってみると、ウィンドウの反応がなくなってしまう。このあたりの対処は別記事。

関連記事:

参考URL: