PyGTK SpinButton类
SpinnButton小组件,通常被称为Spinner,是一个gtk.Entry小组件,其右侧有上下箭头。用户可以在其中直接输入一个数值,或者使用上下箭头进行递增或递减。gtk.SpinButton类是继承自gtk.Entry类。它使用一个gtk.Adjustment对象,用它可以限制旋转器中数值的范围和步长。
SpinButton widget是用下面的构造函数创建的
sp = gtk.SpinButton(adj, climb_rate, digits)
这里,adj代表 控制范围的gtk.Adjustment对象 , climb_rate 是一个加速因子和由数字指定的小数。
gtk.SpinButton类有以下方法—-。
- SpinButton.set_adjustment() – 这设置了 “调整 “属性。
-
SpinButton.set_digits() – 这将 “digits “属性设置为确定旋钮要显示的小数位数的值。
-
SpinButton.set_increments(step, page) – 这设置了每次按下鼠标左键都会应用增量的step值,以及每次按下鼠标中键都会应用增量的page值。
-
SpinButton.set_range() – 这设置了Spinbutton的最小和最大允许值。
-
SpinButton.set_value() – 这是通过编程将旋转按钮设置为一个新的值。
-
SpinButton.update_policy() – 有效值是gtk.UPDATE_ALWAYS和gtk.UPDATE_VALID。
-
SpinButton.spin(direction, increment=1) – 这将在指定的方向上增加或减少Spinner的值。
以下是预定义的方向常数 –
gtk.SPIN_STEP_FORWARD | 以步进方式向前递增 |
---|---|
gtk.SPIN_STEP_BACKWARD | 向后按步长递增 |
gtk.SPIN_PAGE_FORWARD | 按步长向前 |
gtk.SPIN_PAGE_BACKWARD | 向后按步长递增 |
gtk.SPIN_HOME | 移动到最小值 |
gtk.SPIN_END | 移动到最大值 |
gtk.SPIN_USER_DEFINED | 增加值的增量 |
- SpinButton.set_wrap() – 如果wrap是True,當超過範圍的上限或下限時,旋轉按鈕的值會包裹到相反的限制。
gtk.SpinButton widget會發出以下的信號 –
change-value | 当旋转按钮的值被键盘动作改变时,就会发出这个信号 |
---|---|
input | 这是在值改变时发出的。 |
output | 当旋转按钮的显示值被改变时,这将被发出。如果处理程序成功设置了文本,并且不需要进一步处理,则返回 True 。 |
value-changed | 当任何改变旋钮显示的设置被改变时,这将被发出。 |
wrapped | 在旋转按钮从其最大值到最小值或反之亦然后,立即发出此消息。 |
例子
下面的例子通过使用三个SpinButton部件构造了一个简单的 日期选择器 。日期选择器应用一个调整对象来限制1-31之间的值。第二个选择器是针对1-12个月的数量。第三个选择器选择年份范围2000-2020。
观察一下代码 –
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("SpinButton Demo")
self.set_size_request(300, 200)
self.set_position(gtk.WIN_POS_CENTER)
self.set_border_width(20)
vbox = gtk.VBox(False, 5)
hbox = gtk.HBox(True, 3)
lbl1 = gtk.Label("Date")
hbox.add(lbl1)
adj1 = gtk.Adjustment(1.0, 1.0, 31.0, 1.0, 5.0, 0.0)
spin1 = gtk.SpinButton(adj1, 0, 0)
spin1.set_wrap(True)
hbox.add(spin1)
lbl2 = gtk.Label("Month")
hbox.add(lbl2)
adj2 = gtk.Adjustment(1.0, 1.0, 12.0, 1.0, 5.0, 0.0)
spin2 = gtk.SpinButton(adj2, 0, 0)
spin2.set_wrap(True)
hbox.add(spin2)
lbl3 = gtk.Label("Year")
hbox.add(lbl3)
adj3 = gtk.Adjustment(1.0, 2000.0, 2020.0, 1.0, 5.0, 0.0)
spin3 = gtk.SpinButton(adj3, 0, 0)
spin3.set_wrap(True)
hbox.add(spin3)
frame = gtk.Frame()
frame.add(hbox)
frame.set_label("Date of Birth")
vbox.add(frame)
self.add(vbox)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
执行后,上述代码将产生以下输出 −