PyGTK - Scrollbar 滚动条类
此类是 gtk.Hscrollbar 和 gtk.Vscrollbar 小部件的抽象基类。 两者都与一个 Adjustment 对象相关联。 滚动条滑块的位置由滚动调整控制。 Adjustment 对象的属性使用如下 −
lower | 滚动区域的最小值 |
upper | 滚动区域的最大值 |
value | 表示滚动条的位置,必须在lower和upper之间 |
page_size | 表示可见可滚动区域的大小 |
step_increment | 单击小步进箭头时滚动的距离 |
page_increment | 按下 Page Up 或 Page Down 键时滚动的距离 |
以下程序显示了一个 Scale 和一个 Scrollbar 小部件,它们放置在添加到顶层窗口的 VBox 中。 它们中的每一个都与一个调整对象相关联。
adj1 = gtk.Adjustment(0, 0, 101, 0.1, 1, 1) self.adj2 = gtk.Adjustment(10,0,101,5,1,1)
一个 gtk.HScale 小部件是一个附加在 adj1 上的滑块控件。 其更新策略、绘图值个数、位置设置如下 −
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 提供水平滚动条。 它与 adj2 对象相关联。 它的更新策略也设置为 CONTINUOUS。
self.bar1 = gtk.HScrollbar(self.adj2) self.bar1.set_update_policy(gtk.UPDATE_CONTINUOUS)
为了显示滚动条的瞬时值,adjustment 调整对象adj2的'value-changed'信号连接到回调函数on_scrolled()。 该函数检索 adjustment 调整对象的值属性并将其显示在滚动条下方的标签上。
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)))
示例
观察下面的代码 −
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()
上面的代码会产生如下输出 −