PyGTK - Classe SpinButton
O widget SpinnButton, geralmente chamado de Spinner, é um widget gtk.Entry com setas para cima e para baixo à direita. Um usuário pode digitar um valor numérico diretamente nele ou aumentar ou diminuir usando as setas para cima e para baixo. A classe gtk.SpinButton é herdada da classe gtk.Entry. Ele usa um objeto gtk.Adjustment com o qual o intervalo e a etapa do valor numérico no botão giratório podem ser restritos.
O widget SpinButton é criado usando o seguinte construtor -
sp = gtk.SpinButton(adj, climb_rate, digits)
Aqui, adj representa o gtk.Adjustment object controlling range, climb_rate é um fator de aceleração e o número de decimais especificados por dígitos.
A classe gtk.SpinButton tem os seguintes métodos -
SpinButton.set_adjustment () - Isso define a propriedade "ajuste".
SpinButton.set_digits () - Isso define a propriedade "dígitos" para o valor para determinar o número de casas decimais a serem exibidas pelo botão de rotação.
SpinButton.set_increments (step, page) - Define o valor do passo que tem incremento aplicado para cada pressionamento do botão esquerdo do mouse e valor da página que é incrementado para cada pressionamento do botão do meio do mouse.
SpinButton.set_range () - Isso define os valores mínimo e máximo permitidos para spinbutton.
SpinButton.set_value () - Isso define o botão de rotação para um novo valor programaticamente.
SpinButton.update_policy () - Os valores válidos são gtk.UPDATE_ALWAYS e gtk.UPDATE_VALID
SpinButton.spin (direção, incremento = 1) - aumenta ou diminui o valor do Spinner na direção especificada.
A seguir estão as constantes de direção predefinidas -
gtk.SPIN_STEP_FORWARD | avançar por step_increment |
gtk.SPIN_STEP_BACKWARD | retrocedendo por step_increment |
gtk.SPIN_PAGE_FORWARD | avançar por step_increment |
gtk.SPIN_PAGE_BACKWARD | retrocedendo por step_increment |
gtk.SPIN_HOME | mover para o valor mínimo |
gtk.SPIN_END | mover para o valor máximo |
gtk.SPIN_USER_DEFINED | adicionar incremento ao valor |
SpinButton.set_wrap () - Se wrap for True, o valor do botão de rotação volta ao limite oposto quando o limite superior ou inferior do intervalo excede.
O widget gtk.SpinButton emite os seguintes sinais -
valor de mudança | Isto é emitido quando o valor do botão giratório é alterado pela ação do teclado |
entrada | Isso é emitido quando o valor muda. |
resultado | Isso é emitido quando o valor de exibição do botão giratório é alterado. DevoluçõesTrue se o manipulador definir o texto com êxito e nenhum processamento adicional for necessário. |
valor alterado | Isso é emitido quando qualquer uma das configurações que alteram a exibição do botão giratório é alterada. |
embrulhado | Isso é emitido logo após o botão giratório passar de seu valor máximo para mínimo ou vice-versa. |
Exemplo
O exemplo a seguir constrói um simples Date Selectorusando três widgets SpinButton. O Seletor de dia é aplicado a um objeto de ajuste para restringir o valor entre 1—31. O segundo seletor é para o número de meses de 1 a 12. O terceiro seletor seleciona o intervalo de anos 2000-2020.
Observe o código -
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()
Após a execução, o código acima produzirá a seguinte saída -