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 -