PyGTK-SpinButton 클래스

Spinner라고도하는 SpinnButton 위젯은 오른쪽에 위쪽 및 아래쪽 화살표가있는 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 step_increment로 앞으로
gtk.SPIN_STEP_BACKWARD step_increment 뒤로
gtk.SPIN_PAGE_FORWARD step_increment로 앞으로
gtk.SPIN_PAGE_BACKWARD step_increment 뒤로
gtk.SPIN_HOME 최소값으로 이동
gtk.SPIN_END 최대 값으로 이동
gtk.SPIN_USER_DEFINED 값에 증분 추가
  • SpinButton.set_wrap () — wrap이 True 인 경우 범위의 상한 또는 하한이 초과되면 스핀 버튼 값이 반대 한계로 래핑됩니다.

gtk.SpinButton 위젯은 다음 신호를 내 보냅니다.

변화 가치 키보드 동작으로 스핀 버튼 값이 변경 될 때 발생합니다.
입력 값이 변경 될 때 발생합니다.
산출 스핀 버튼 표시 값이 변경되면 발생합니다. 보고True 핸들러가 텍스트를 성공적으로 설정하고 추가 처리가 필요하지 않은 경우.
가치 변화 이것은 스핀 버튼의 표시를 변경하는 설정이 변경 될 때 발생합니다.
포장 이것은 스핀 버튼이 최대 값에서 최소값으로 또는 그 반대로 랩핑 한 직후에 방출됩니다.

다음 예제는 간단한 Date Selector세 개의 SpinButton 위젯을 사용합니다. Day 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()

실행시 위의 코드는 다음과 같은 출력을 생성합니다.