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.