PyGTK - Kelas SpinButton

Widget SpinnButton, sering disebut Spinner adalah widget gtk.Entry dengan panah atas dan bawah di sebelah kanannya. Seorang pengguna dapat mengetikkan nilai numerik langsung di dalamnya atau kenaikan atau penurunan menggunakan panah atas dan bawah. Kelas gtk.SpinButton diwarisi dari kelas gtk.Entry. Ini menggunakan gtk. Objek penyesuaian yang rentang dan langkah dari nilai numerik di spinner dapat dibatasi.

Widget SpinButton dibuat menggunakan konstruktor berikut -

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

Di sini, adj mewakili gtk.Adjustment object controlling range, climb_rate adalah faktor percepatan dan jumlah desimal yang ditentukan oleh digit.

Kelas gtk.SpinButton memiliki metode berikut -

  • SpinButton.set_adjustment () - Ini menyetel properti "penyesuaian".

  • SpinButton.set_digits () - Ini menetapkan properti "digit" ke nilai untuk menentukan jumlah tempat desimal yang akan ditampilkan oleh tombol putar.

  • SpinButton.set_increments (langkah, halaman) - Ini menetapkan nilai langkah yang memiliki kenaikan yang diterapkan untuk setiap penekanan tombol mouse kiri dan nilai halaman yang merupakan kenaikan yang diterapkan untuk setiap penekanan tombol mouse tengah.

  • SpinButton.set_range () - Ini menetapkan nilai minimum dan maksimum yang diizinkan untuk spinbutton.

  • SpinButton.set_value () - Ini mengatur tombol putar ke nilai baru secara terprogram.

  • SpinButton.update_policy () - Nilai yang valid adalah gtk.UPDATE_ALWAYS dan gtk.UPDATE_VALID

  • SpinButton.spin (direction, increment = 1) - Ini menambah atau mengurangi nilai Spinner ke arah yang ditentukan.

Berikut ini adalah konstanta arah yang telah ditentukan sebelumnya -

gtk.SPIN_STEP_FORWARD maju demi langkah_increment
gtk.SPIN_STEP_BACKWARD mundur demi langkah_increment
gtk.SPIN_PAGE_FORWARD maju demi langkah_increment
gtk.SPIN_PAGE_BACKWARD mundur demi langkah_increment
gtk.SPIN_HOME pindah ke nilai minimum
gtk.SPIN_END pindah ke nilai maksimum
gtk.SPIN_USER_DEFINED tambahkan selisih nilai
  • SpinButton.set_wrap () - Jika bungkusnya Benar, nilai tombol putar membungkus ke batas yang berlawanan ketika batas atas atau bawah dari kisaran melebihi.

Widget gtk.SpinButton memancarkan sinyal berikut -

mengubah nilai Ini dibunyikan saat nilai tombol putar diubah oleh tindakan keyboard
memasukkan Ini dipancarkan saat nilainya berubah.
keluaran Ini dibunyikan saat nilai tampilan tombol putar diubah. KembaliTrue jika penangan berhasil menyetel teks dan tidak diperlukan pemrosesan lebih lanjut.
nilai berubah Ini dibunyikan bila salah satu pengaturan yang mengubah tampilan tombol putar diubah.
dibungkus Ini dipancarkan tepat setelah tombol putar membungkus dari nilai maksimum ke minimum atau sebaliknya.

Contoh

Contoh berikut membuat file Date Selectordengan menggunakan tiga widget SpinButton. Pemilih Hari menerapkan objek Penyesuaian untuk membatasi nilai antara 1—31. Pemilih kedua adalah untuk jumlah bulan 1—12. Pemilih ketiga memilih rentang tahun 2000—2020.

Perhatikan kodenya -

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

Setelah dieksekusi, kode di atas akan menghasilkan keluaran berikut -