Pygtk 简明教程
PyGTK - Scrollbar Class
此类是 gtk.Hscrollbar 和 gtk.Vscrollbar 小部件的抽象基类。两者均与 Adjustment 对象相关联。滚动条拇指的位置由滚动调整控制。调整对象中的属性使用如下 −
lower |
滚动区域的最小值 |
upper |
滚动域的最大值 |
value |
描述滚动条的位置,必须介于“lower”和“upper”之间 |
page_size |
描述可见可滚动区域的大小 |
step_increment |
当单击小型步进器箭头时滚动距离 |
page_increment |
当按键 Page Up 或 Page Down 时滚动距离 |
以下程序显示放置在 VBox 中的 HScale 和 HScrollbar 小部件,这些小部件被添加到顶级窗口中。它们中的每一个都与一个调整对象相关联。
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)
为了显示滚动条的瞬时值,将 the adjustment object — 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)))
Example
观察以下代码 -
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()
上述代码将生成以下输出 −