PyGTK - Scrollbar 类

  • 简述

    此类是 gtk.Hscrollbar 和 gtk.Vscrollbar 小部件的抽象基类。两者都与一个调整对象相关联。滚动条的拇指位置由滚动调整控制。调整对象的属性使用如下 -
    lower 滚动区域的最小值
    upper 滚动区域的最大值
    value 表示滚动条的位置,必须在上下之间
    page_size 表示可见可滚动区域的大小
    step_increment 点击小步进箭头时的滚动距离
    page_increment 按下 Page UpPage Down 键时的滚动距离
    以下程序显示了一个 HScale 和一个 HScrollbar 小部件,它们放置在添加到顶层窗口的 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)
    
    为了显示滚动条的瞬时值,调整对象--adj2的'value-changed'信号连接到回调函数 on_scrolled()。该函数检索调整对象的值属性,并将其显示在滚动条下方的标签上。
    
    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()
    
    上面的代码会产生如下输出 -
    范围小部件演示