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 -