📅  最后修改于: 2020-11-08 08:03:39             🧑  作者: Mango
SpinnButton窗口小部件(通常称为Spinner)是一个gtk.Entry窗口小部件,其右侧有上下箭头。用户可以直接在其中键入数字值,也可以使用向上和向下箭头递增或递减。 gtk.SpinButton类是从gtk.Entry类继承的。它使用gtk.Adjustment对象,可以限制微调器中数值的范围和步长。
SpinButton小部件使用以下构造函数创建-
sp = gtk.SpinButton(adj, climb_rate, digits)
这里的adj代表gtk.Adjustment对象的控制范围, climb_rate是加速度因数,由数字指定的小数位数。
gtk.SpinButton类具有以下方法-
SpinButton.set_adjustment()-设置“ 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,crement = 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 | move to maximum value |
gtk.SPIN_USER_DEFINED | add increment to the value |
SpinButton.set_wrap()—如果wrap为True,则超出范围的上限或下限时,旋转按钮值将绕到相反的限制。
gtk.SpinButton小部件发出以下信号-
change-value | This is emitted when the spinbutton value is changed by keyboard action |
input | This is emitted when the value changes. |
output | This is emitted when the spinbutton display value is changed. Returns True if the handler successfully sets the text and no further processing is required. |
value-changed | This is emitted when any of the settings that change the display of the spinbutton is changed. |
wrapped | This is emitted right after the spinbutton wraps from its maximum to minimum value or vice-versa. |
下面的示例使用三个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()
执行后,以上代码将产生以下输出-