Pygtk-progressbar-class

提供:Dev Guides
移動先:案内検索

PyGTK-ProgressBarクラス

進行状況バーは、ユーザーに実行時間の長いプロセスを視覚的に示すために使用されます。 gtk.ProgressBarウィジェットは、パーセンテージモードとアクティビティモードの2つのモードで使用できます。

完了が保留されている作業の量を正確に推定できる場合、進行状況バーはパーセントモードで使用でき、ユーザーには完了したジョブの割合を示す増分バーが表示されます。 一方、完了すべき作業量を正確に決定できる場合、進行状況バーはアクティビティモードで使用され、バーは前後に移動するブロックを表示してアクティビティを表示します。

次のコンストラクタは、gtk.ProgressBarクラスのウィジェットを初期化します-

pb = gtk.ProgressBar()

gtk.ProgressBarは機能を管理するために次のメソッドを使用します-

  • * ProgressBar.pulse()*-これはプログレスバーをナッジして、ある程度の進行が行われたことを示しますが、その程度はわかりません。 このメソッドは、プログレスバーモードを「アクティビティモード」に変更します。このモードでは、ブロックが前後にバウンドします。
  • * ProgressBar.set_fraction(fraction)-これにより、進行状況バーが *fraction で指定されたバーの部分を「埋める」ようになります。 fraction の値は0.0から1.0の間でなければなりません。
  • * ProgressBar.set_pulse_setup()-これは、 pulse()メソッドの呼び出しごとにバウンスブロックを移動するために、プログレスバーの合計長の( *fraction で指定される)部分を設定します。
  • * ProgressBar.set_orientation()*-進行状況バーの方向を設定します。 次の定数のいずれかに設定できます。
  • gtk.PROGRESS_LEFT_TO_RIGHT
  • gtk.PROGRESS_RIGHT_TO_LEFT
  • gtk.PROGRESS_BOTTOM_TO_TOP
  • gtk.PROGRESS_TOP_TO_BOTTOM

次のプログラムでは、gtk.ProgressBarウィジェットがアクティビティモードで使用されています。 したがって、進行状況の初期位置は* set_fraction()*メソッドによって0.0に設定されます。

self.pb = gtk.ProgressBar()
self.pb.set_text("Progress")
self.pb.set_fraction(0.0)

100ミリ秒後に進行状況を1%増加させるために、タイマーオブジェクトが宣言され、100ミリ秒ごとにコールバック関数が呼び出されるように設定され、進行状況バーが更新されます。

self.timer = gobject.timeout_add (100, progress_timeout, self)

ここで、* progress_timeout()*はコールバック関数です。 * set_fraction()*メソッドのパラメーターを1パーセント増やし、進行状況バーのテキストを更新して完了の割合を表示します。

def progress_timeout(pbobj):
   new_val = pbobj.pb.get_fraction() + 0.01
   pbobj.pb.set_fraction(new_val)
   pbobj.pb.set_text(str(new_val*100)+" % completed")
   return True

次のコードを観察してください-

import gtk, gobject

def progress_timeout(pbobj):
   new_val = pbobj.pb.get_fraction() + 0.01
   pbobj.pb.set_fraction(new_val)
   pbobj.pb.set_text(str(new_val*100)+" % completed")
   return True

class PyApp(gtk.Window):

   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Progressbar demo")
      self.set_size_request(300,200)
      self.set_position(gtk.WIN_POS_CENTER)

      fix = gtk.Fixed()
      self.pb = gtk.ProgressBar()
      self.pb.set_text("Progress")
      self.pb.set_fraction(0.0)

      fix.put(self.pb,80,100)
      self.add(fix)
      self.timer = gobject.timeout_add (100, progress_timeout, self)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
PyApp()
gtk.main()

上記のコードは、次の出力を生成します-

ProgressBar Demo

アクティビティモードでプログレスバーを使用するには、コールバック関数を次のように変更して実行します-

def progress_timeout(pbobj):
   pbobj.pb.pulse()
   return True

進行状況バー内のブロックの前後の動きは、アクティビティの進行状況を示します。

ProgressBar Demo