PyGTK - Kelas ProgressBar

Progress bar digunakan untuk memberi pengguna indikasi visual dari proses yang berjalan lama. Widget gtk.ProgressBar dapat digunakan dalam dua mode - mode persentase dan mode aktivitas.

Jika dimungkinkan untuk memperkirakan secara akurat berapa banyak pekerjaan yang menunggu untuk diselesaikan, bilah kemajuan dapat digunakan dalam mode persentase, dan pengguna melihat bilah inkremental yang menunjukkan persentase pekerjaan yang diselesaikan. Sebaliknya, jika jumlah pekerjaan yang harus diselesaikan dapat ditentukan secara akurat, bilah kemajuan digunakan dalam mode aktivitas di mana, bilah menunjukkan aktivitas dengan menampilkan blok yang bergerak maju mundur.

Konstruktor berikut menginisialisasi widget kelas gtk.ProgressBar -

pb = gtk.ProgressBar()

gtk.ProgressBar menggunakan metode berikut untuk mengelola fungsionalitas -

  • ProgressBar.pulse()- Ini mendorong bilah kemajuan untuk menunjukkan bahwa beberapa kemajuan telah dibuat, tetapi Anda tidak tahu seberapa banyak. Metode ini juga mengubah mode bilah kemajuan menjadi "mode aktivitas", di mana sebuah blok memantul bolak-balik.

  • ProgressBar.set_fraction(fraction) - Ini menyebabkan bilah kemajuan "mengisi" bagian bilah yang ditentukan oleh fraction. Nilai darifraction harus antara 0,0 dan 1,0.

  • ProgressBar.set_pulse_setup() - Ini mengatur porsi (ditentukan oleh fraction) dari total panjang bilah kemajuan untuk memindahkan blok pantulan untuk setiap panggilan ke pulse() metode.

  • ProgressBar.set_orientation()- Ini mengatur orientasi bilah kemajuan. Ini mungkin disetel ke salah satu konstanta berikut:

    • gtk.PROGRESS_LEFT_TO_RIGHT

    • gtk.PROGRESS_RIGHT_TO_LEFT

    • gtk.PROGRESS_BOTTOM_TO_TOP

    • gtk.PROGRESS_TOP_TO_BOTTOM

Dalam program berikut, widget gtk.ProgressBar digunakan dalam mode aktivitas. Oleh karena itu, posisi awal kemajuan diatur ke 0,0 olehset_fraction() metode.

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

Untuk menambah kemajuan sebesar 1 persen setelah 100 milidetik, objek pengatur waktu dideklarasikan dan fungsi panggilan balik diatur untuk dipanggil setelah setiap 100 md sehingga bilah kemajuan diperbarui.

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

Sini, progress_timeout()adalah fungsi panggilan balik. Ini menambah parameter dariset_fraction() metode sebesar 1 persen dan memperbarui teks dalam bilah kemajuan untuk menunjukkan persentase penyelesaian.

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

Contoh

Perhatikan kode berikut -

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

Kode di atas akan menghasilkan output berikut -

Untuk menggunakan bilah kemajuan dalam mode aktivitas, ubah fungsi panggilan balik ke berikut ini dan jalankan -

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

Gerakan bolak-balik blok di dalam bilah Kemajuan akan menunjukkan kemajuan aktivitas.