PyGTK - klasa przewijania
Ta klasa jest abstrakcyjną klasą bazową dla widżetów gtk.Hscrollbar i gtk.Vscrollbar. Oba są powiązane z obiektem dopasowania. Położenie kciuka paska przewijania jest kontrolowane przez regulacje przewijania. Atrybuty obiektu dopasowania są używane w następujący sposób -
niższy | Minimalna wartość obszaru przewijania |
górny | Maksymalna wartość obszaru przewijania |
wartość | Reprezentuje położenie paska przewijania, które musi znajdować się między dolnym a górnym |
rozmiar strony | Reprezentuje rozmiar widocznego przewijalnego obszaru |
step_increment | Odległość do przewinięcia po kliknięciu małych strzałek krokowych |
przyrost_strony | Odległość przewijania, gdy Page Up lub Page Down naciśnięto klawisze |
Poniższy program pokazuje widżety HScale i HScrollbar umieszczone w VBox dodanym do okna najwyższego poziomu. Każdy z nich jest powiązany z obiektem dopasowania.
adj1 = gtk.Adjustment(0, 0, 101, 0.1, 1, 1)
self.adj2 = gtk.Adjustment(10,0,101,5,1,1)
Widżet gtk.HScale to element sterujący suwakiem dołączony do narzędzia adj1. Zasady aktualizacji, liczba i pozycja wartości rysunku są skonfigurowane w następujący sposób -
scale1 = gtk.HScale(adj1)
scale1.set_update_policy(gtk.UPDATE_CONTINUOUS)
scale1.set_digits(1)
scale1.set_value_pos(gtk.POS_TOP)
scale1.set_draw_value(True)
gtk.HScrollbar zapewnia poziomy pasek przewijania. Jest powiązany z obiektem adj2. Jego zasady aktualizacji również są ustawione na CIĄGŁE.
self.bar1 = gtk.HScrollbar(self.adj2)
self.bar1.set_update_policy(gtk.UPDATE_CONTINUOUS)
Aby wyświetlić chwilową wartość paska przewijania, sygnał „zmieniona wartość” the adjustment object — adj2 jest połączony z funkcją oddzwaniania on_scrolled(). Funkcja pobiera właściwość value obiektu dopasowania i wyświetla ją na etykiecie poniżej paska przewijania.
self.adj2.connect("value_changed", self.on_scrolled)
def on_scrolled(self, widget, data = None):
self.lbl2.set_text("HScrollbar value: "+str(int(self.adj2.value)))
Przykład
Przestrzegaj następującego kodu -
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Range widgets Demo")
self.set_default_size(250, 200)
self.set_position(gtk.WIN_POS_CENTER)
adj1 = gtk.Adjustment(0.0, 0.0, 101.0, 0.1, 1.0, 1.0)
self.adj2 = gtk.Adjustment(10,0,101,5,1,1)
scale1 = gtk.HScale(adj1)
scale1.set_update_policy(gtk.UPDATE_CONTINUOUS)
scale1.set_digits(1)
scale1.set_value_pos(gtk.POS_TOP)
scale1.set_draw_value(True)
vb = gtk.VBox()
vb.add(scale1)
lbl1 = gtk.Label("HScale")
vb.add(lbl1)
self.bar1 = gtk.HScrollbar(self.adj2)
self.bar1.set_update_policy(gtk.UPDATE_CONTINUOUS)
vb.add(self.bar1)
self.lbl2 = gtk.Label("HScrollbar value: ")
vb.add(self.lbl2)
self.adj2.connect("value_changed", self.on_scrolled)
self.add(vb)
self.connect("destroy", gtk.main_quit)
self.show_all()
def on_scrolled(self, widget, data=None):
self.lbl2.set_text("HScrollbar value: "+str(int(self.adj2.value)))
if __name__ == '__main__':
PyApp()
gtk.main()
Powyższy kod wygeneruje następujące dane wyjściowe -