PyGTK - klasa ScrolledWindow

Przewijane okno jest tworzone w celu uzyskania dostępu do innego widżetu o obszarze większym niż okno nadrzędne. Niektóre widżety, takie jak TreeView i TextView z natywną obsługą przewijania. W przypadku innych, takich jak Etykieta lub Tabela, należy podać rzutnię.

Następująca składnia jest używana dla konstruktora klasy gtk.ScrolledWindow -

sw = gtk.ScrolledWindow(hadj, vadj)

Poniżej przedstawiono metody klasy gtk.ScrolledWindow -

  • ScrolledWindow.set_hadjustment() - To ustawia wyrównanie poziome na obiekt gtk.Adjustment

  • ScrolledWindow.set_vadjustment() - Spowoduje to ustawienie dopasowania pionowego na obiekt gtk.Adjustment

  • ScrolledWindow.set_Policy (hpolicy, vpolicy)- Spowoduje to ustawienie właściwości „hscrollbar_policy” i „vscrollbar_policy”. Używana jest jedna z następujących predefiniowanych stałych -

    • gtk.POLICY_ALWAYS - Pasek przewijania jest zawsze obecny

    • gtk.POLICY_AUTOMATIC - Pasek przewijania jest obecny tylko w razie potrzeby, tj. Zawartość jest większa niż okno

    • gtk.POLICY_NEVER - Pasek przewijania nigdy nie jest obecny

  • ScrolledWindow.add_with_viewport(child) - Ta metoda służy do dodawania widżetu (określonego przez dziecko) bez natywnych możliwości przewijania do przewijanego okna. Jest to wygodna funkcja równoważna dodawaniuchild do gtk.Viewport, a następnie dodając rzutnię do przewijanego okna.

Poniższy kod dodaje przewijane okno wokół obiektu gtk.Table z wymiarami 10 na 10. Ponieważ obiekt Tabela nie obsługuje dopasowań automatycznie, jest dodawany w rzutni.

sw = gtk.ScrolledWindow()
table = gtk.Table(10,10)

Dwie zagnieżdżone pętle służą do dodawania 10 wierszy po 10 kolumn każda. Widżet gtk.Button jest umieszczony w każdej komórce.

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)

Ta wystarczająco duża tabela jest teraz dodawana w przewijanym oknie wraz z rzutnią.

sw.add_with_viewport(table)

Przykład

Przestrzegaj następującego kodu -

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

Powyższy kod wygeneruje następujące dane wyjściowe -