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() −これは部分を設定します(によって指定されます fraction)各呼び出しのバウンスブロックを移動するためのプログレスバーの全長 pulse() 方法。

  • 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ウィジェットがアクティビティモードで使用されています。したがって、進行の初期位置は、によって0.0に設定されます。set_fraction() 方法。

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()

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

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

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

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