PyGTK - Kelas ScrolledWindow
Jendela yang digulir dibuat untuk mengakses widget lain dengan area yang lebih besar dari jendela induk. Beberapa widget seperti TreeView dan TextView mendukung native untuk scrolling. Untuk lainnya seperti Label atau Tabel, Area pandang harus disediakan.
Sintaks berikut digunakan untuk konstruktor kelas gtk.ScrolledWindow -
sw = gtk.ScrolledWindow(hadj, vadj)
Berikut ini adalah metode dari kelas gtk.ScrolledWindow -
ScrolledWindow.set_hadjustment() - Ini menyetel penyesuaian horizontal ke objek penyesuaian gtk
ScrolledWindow.set_vadjustment() - Ini menyetel penyesuaian vertikal ke objek penyesuaian gtk
ScrolledWindow.set_Policy (hpolicy, vpolicy)- Ini menyetel properti "hscrollbar_policy" dan "vscrollbar_policy". Salah satu dari konstanta standar berikut digunakan -
gtk.POLICY_ALWAYS - Scrollbar selalu ada
gtk.POLICY_AUTOMATIC - Scrollbar muncul hanya jika diperlukan, yaitu isinya lebih besar dari jendela
gtk.POLICY_NEVER - Scrollbar tidak pernah ada
ScrolledWindow.add_with_viewport(child) - Metode ini digunakan untuk menambahkan widget (ditentukan oleh anak) tanpa kemampuan scroll asli ke jendela yang di-scroll. Ini adalah fungsi kenyamanan yang setara dengan menambahkanchild ke a gtk.Viewport, lalu menambahkan area pandang ke jendela yang digulir.
Kode berikut menambahkan jendela yang di-scroll di sekitar objek gtk.Table dengan dimensi 10 kali 10. Karena objek Tabel tidak mendukung penyesuaian secara otomatis, itu ditambahkan di Viewport.
sw = gtk.ScrolledWindow()
table = gtk.Table(10,10)
Dua loop bersarang digunakan untuk menambahkan 10 baris masing-masing 10 kolom. Widget gtk.Button ditempatkan di setiap sel.
for i in range(1,11):
for j in range(1,11):
caption = "Btn"+str(j)+str(i)
btn = gtk.Button(caption)
table.attach(btn, i, i+1, j, j+1)
Tabel yang cukup besar ini sekarang ditambahkan di jendela yang digulir bersama dengan viewport.
sw.add_with_viewport(table)
Contoh
Perhatikan kode berikut -
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("ScrolledWindow and Viewport")
self.set_size_request(400,300)
self.set_position(gtk.WIN_POS_CENTER)
sw = gtk.ScrolledWindow()
table = gtk.Table(10,10)
table.set_row_spacings(10)
table.set_col_spacings(10)
for i in range(1,11):
for j in range(1,11):
caption = "Btn"+str(j)+str(i)
btn = gtk.Button(caption)
table.attach(btn, i, i+1, j, j+1)
sw.add_with_viewport(table)
self.add(sw)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
Kode di atas akan menghasilkan output berikut -