PyGTK - 滚动条类



此类是 gtk.Hscrollbar 和 gtk.Vscrollbar 小部件的抽象基类。两者都与 Adjustment 对象关联。滚动条滑块的位置由滚动调整器控制。调整器对象的属性用法如下:

lower 滚动区域的最小值
upper 滚动区域的最大值
value 表示滚动条的位置,必须在 lower 和 upper 之间
page_size 表示可见可滚动区域的大小
step_increment 单击小步进箭头时滚动的距离
page_increment 按下Page UpPage Down 键时滚动的距离

以下程序显示一个 HScale 和一个 HScrollbar 小部件,它们放置在一个 VBox 中,并添加到顶级窗口。它们每个都与一个 adjustment 对象关联。

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()。该函数检索调整器对象的 value 属性并在滚动条下方的标签上显示它。

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

以上代码将生成以下输出:

Range Widgets Demo
广告
© . All rights reserved.