PyGTK - Lớp SpinButton

Tiện ích SpinnButton, thường được gọi là Spinner là một tiện ích gtk.Entry với các mũi tên lên và xuống ở bên phải của nó. Người dùng có thể nhập giá trị số trực tiếp vào đó hoặc tăng hoặc giảm bằng cách sử dụng các mũi tên lên và xuống. Lớp gtk.SpinButton được kế thừa từ lớp gtk.Entry. Nó sử dụng một đối tượng gtk.Adjustment mà phạm vi và bước của giá trị số trong vòng xoay có thể bị hạn chế.

Tiện ích SpinButton được tạo bằng cách sử dụng hàm tạo sau:

sp = gtk.SpinButton(adj, climb_rate, digits)

Ở đây, adj đại diện cho gtk.Adjustment object controlling range, climb_rate là một hệ số gia tốc và số lượng các số thập phân được chỉ định bởi các chữ số.

Lớp gtk.SpinButton có các phương thức sau:

  • SpinButton.set_adjustment () - Điều này đặt thuộc tính "điều chỉnh".

  • SpinButton.set_digits () - Điều này đặt thuộc tính "chữ số" thành giá trị để xác định số vị trí thập phân được hiển thị bởi nút quay.

  • SpinButton.set_increments (bước, trang) - Giá trị này đặt giá trị bước được áp dụng cho mỗi lần nhấn nút chuột trái và giá trị trang được áp dụng cho mỗi lần nhấn nút giữa.

  • SpinButton.set_range () - Điều này đặt giá trị tối thiểu và tối đa cho phép cho spinbutton.

  • SpinButton.set_value () - Điều này đặt nút xoay thành giá trị mới theo lập trình.

  • SpinButton.update_policy () - Các giá trị hợp lệ là gtk.UPDATE_ALWAYS và gtk.UPDATE_VALID

  • SpinButton.spin (hướng, số gia = 1) - Điều này tăng hoặc giảm giá trị của Spinner theo hướng được chỉ định.

Sau đây là các hằng số hướng được xác định trước:

gtk.SPIN_STEP_FORWARD về phía trước từng bước_increment
gtk.SPIN_STEP_BACKWARD lùi lại theo step_increment
gtk.SPIN_PAGE_FORWARD về phía trước từng bước_increment
gtk.SPIN_PAGE_BACKWARD lùi lại theo step_increment
gtk.SPIN_HOME chuyển đến giá trị nhỏ nhất
gtk.SPIN_END di chuyển đến giá trị lớn nhất
gtk.SPIN_USER_DEFINED thêm gia số vào giá trị
  • SpinButton.set_wrap () - Nếu giá trị bọc là Đúng, giá trị nút xoay sẽ bao quanh giới hạn ngược lại khi giới hạn trên hoặc dưới của phạm vi vượt quá.

Tiện ích gtk.SpinButton phát ra các tín hiệu sau:

thay đổi giá trị Điều này được phát ra khi giá trị nút xoay được thay đổi bằng thao tác bàn phím
đầu vào Điều này được phát ra khi giá trị thay đổi.
đầu ra Điều này được phát ra khi giá trị hiển thị nút quay được thay đổi. Lợi nhuậnTrue nếu trình xử lý đặt thành công văn bản và không cần xử lý thêm.
giá trị thay đổi Điều này được phát ra khi bất kỳ cài đặt nào thay đổi cách hiển thị của nút xoay được thay đổi.
bọc Điều này được phát ra ngay sau khi nút quay kết thúc từ giá trị lớn nhất đến giá trị nhỏ nhất hoặc ngược lại.

Thí dụ

Ví dụ sau đây tạo ra một Date Selectorbằng cách sử dụng ba tiện ích SpinButton. Bộ chọn ngày được áp dụng đối tượng Điều chỉnh để hạn chế giá trị trong khoảng 1—31. Bộ chọn thứ hai dành cho số tháng 1—12. Bộ chọn thứ ba chọn phạm vi năm 2000—2020.

Quan sát mã -

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()

Khi thực thi, đoạn mã trên sẽ tạo ra kết quả sau: