SpinButton 类(SpinButton Class)
SpinnButton小部件,通常称为Spinner,是一个gtk.Entry小部件,右侧有向上和向下箭头。 用户可以直接在其中键入数值,或使用向上和向下箭头递增或递减。 gtk.SpinButton类继承自gtk.Entry类。 它使用gtk.Adjustment对象,可以使用该对象限制微调器中数值的范围和步长。
SpinButton小部件使用以下构造函数创建 -
sp = gtk.SpinButton(adj, climb_rate, digits)
这里,adj表示gtk.Adjustment object controlling range , climb_rate是加速因子和由数字指定的小数位数。
gtk.SpinButton类有以下方法 -
SpinButton.set_adjustment() - 设置“调整”属性。
SpinButton.set_digits() - 将“digits”属性设置为该值,以确定旋转按钮显示的小数位数。
SpinButton.set_increments(step,page) - 设置为每个鼠标左按钮应用增量的步长值和页面值,该值是每次按下鼠标中键的增量。
SpinButton.set_range() - 设置旋钮的最小和最大允许值。
SpinButton.set_value() - 这会以编程方式将旋转按钮设置为新值。
SpinButton.update_policy() - 有效值为gtk.UPDATE_ALWAYS和gtk.UPDATE_VALID
SpinButton.spin(direction,increment = 1) - 这会在指定方向上递增或递减Spinner的值。
以下是预定义的方向常数 -
gtk.SPIN_STEP_FORWARD | forward by step_increment |
gtk.SPIN_STEP_BACKWARD | backward by step_increment |
gtk.SPIN_PAGE_FORWARD | forward by step_increment |
gtk.SPIN_PAGE_BACKWARD | backward by step_increment |
gtk.SPIN_HOME | move to minimum value |
gtk.SPIN_END | 移动到最大值 |
gtk.SPIN_USER_DEFINED | 为该值添加增量 |
SpinButton.set_wrap() - 如果wrap为True,当范围的上限或下限超过时,旋转按钮值将回绕到相反的限制。
gtk.SpinButton小部件发出以下信号 -
change-value | 当通过键盘操作更改旋钮按钮值时会发出此信号 |
input | 值在更改时发出。 |
output | 当旋钮显示值改变时发出。 如果处理程序成功设置文本并且不需要进一步处理,则返回True 。 |
value-changed | 当更改旋转按钮显示的任何设置发生更改时,会发出此信号。 |
wrapped | 这是在旋钮从最大值到最小值换行后立即发出的,反之亦然。 |
例子 (Example)
以下示例使用三个SpinButton小部件构造一个简单的Date Selector 。 日期选择器应用调整对象以限制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()
执行时,上面的代码将产生以下输出 -