PyGTK - Kelas Kalender

Widget Kalender di PyGTK toolkit menampilkan kalender sederhana dengan tampilan satu bulan dalam satu waktu. Kontrol navigasi untuk mengubah bulan dan tahun ditampilkan secara default. Opsi tampilan dapat dikonfigurasi dengan sesuai.

Nilai properti bulan antara 0 sampai 11, dan properti tanggal antara 1 sampai 31.

Ada konstruktor sederhana untuk membuat gtk. Objek kalender -

cal = gtk.Calendar()

Gaya tampilan default menunjukkan bulan dan tahun saat ini serta nama hari.

Kelas gtk.Calendar memiliki metode berikut -

  • Calendar.select_month (mm, yy) - Ini mengubah tampilan kalender ke yang ditentukan mm dan yy.

  • Calendar.select_day (dd) - Ini memilih yang ditentukan dd di kalender saat nilainya antara 1 dan 31. If dd bernilai 0 maka pilihan hari ini akan dihapus.

  • Calendar.display_options () - Ini menyetel opsi tampilan kalender ke nilai yang ditentukan oleh flags. Opsi tampilan yang memungkinkan adalah kombinasi dari:

gtk.CALENDAR_SHOW_HEADING Menentukan bahwa bulan dan tahun harus ditampilkan.
gtk.CALENDAR_SHOW_DAY_NAMES Menentukan bahwa deskripsi tiga huruf hari harus ada.
gtk.CALENDAR_NO_MONTH_CHANGE Mencegah pengguna beralih bulan dengan kalender.
gtk.CALENDAR_SHOW_WEEK_NUMBERS Menampilkan setiap nomor minggu dari tahun ini, di sisi kiri kalender.
gtk.CALENDAR_WEEK_START_MONDAY Memulai minggu kalender pada hari Senin, alih-alih hari Minggu default.
  • Calendar.get_date () - Ini mengambil tahun saat ini kalender, bulan dan nomor hari yang dipilih sebagai tuple (tahun, bulan, hari).

Widget gtk.Calendar memancarkan sinyal berikut -

hari-dipilih Ini dibunyikan saat hari dipilih oleh pengguna atau secara terprogram.
bulan berubah Ini dikeluarkan saat bulan kalender diubah secara terprogram atau oleh pengguna.
bulan depan Ini dibunyikan saat pengguna mengklik kontrol navigasi "bulan depan" di tajuk kalender.
tahun depan Ini ditampilkan saat pengguna mengklik kontrol navigasi "tahun depan" di tajuk kalender.
sebelumnya-bulan Ini ditampilkan saat pengguna mengklik kontrol navigasi "bulan sebelumnya" di tajuk kalender.
tahun sebelumnya Ini dibunyikan saat pengguna mengklik kontrol navigasi "tahun sebelumnya" di tajuk kalender.

Dalam contoh berikut, gtk. Kontrol kalender dan empat tombol ditempatkan di jendela tingkat atas.

Saat tombol 'heading' diklik, opsi tampilan Kalender disetel ke SHOW_HEADING -

def heading(self, widget):
   self.cal.set_display_options(gtk.CALENDAR_SHOW_HEADING)

Ketika pengguna mengklik tombol 'nama hari', callback menyetel opsi tampilan ke SHOW_DAY_NAMES -

def dayname(self, widget):
self.cal.set_display_options(gtk.CALENDAR_SHOW_DAY_NAMES)

Kedua opsi tampilan diaktifkan ketika tombol 'keduanya' ditekan. Untuk memulainya, semua bendera opsi tampilan dihapus dengan menyetelnya ke 0.

self.cal.set_display_options(0)

Tombol 'set' memunculkan kotak pesan yang menampilkan tanggal yang saat ini ditandai.

tp = self.cal.get_date()
str1 = str(tp[0])
str2 = str(tp[1]+1)
str3 = str(tp[2])
label = gtk.Label("Date selected:"+str3+"-"+str2+"-"+str1)
dialog.vbox.add(label)
label.show()

Contoh

Perhatikan kode berikut -

import gtk

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Calendar Demo")
      self.set_size_request(300, 200)
      self.set_position(gtk.WIN_POS_CENTER)
		
      vbox = gtk.VBox(False, 5)
      self.cal = gtk.Calendar()
      halign1 = gtk.Alignment(0.5, 0.5, 0, 0)
      halign1.add(self.cal)
		
      self.cal.set_display_options(0)
      valign = gtk.Alignment(0, 1, 0, 0)
      vbox.pack_start(halign1)
		
      self.btn1 = gtk.Button("set")
      self.btn2 = gtk.Button("heading")
      self.btn3 = gtk.Button("day name")
      self.btn4 = gtk.Button("Both")
		
      hbox = gtk.HBox(True, 3)
      hbox.add(self.btn1)
      hbox.add(self.btn2)
      hbox.add(self.btn3)
      hbox.add(self.btn4)
		
      halign = gtk.Alignment(0.5, 0.5, 0, 0)
      halign.add(hbox)
		
      vbox.pack_start(halign, False, True, 10)
      self.add(vbox)
		
      self.btn1.connect("clicked", self.selectdate)
      self.btn2.connect("clicked", self.heading)
      self.btn3.connect("clicked", self.dayname)
      self.btn4.connect("clicked", self.bothflags)
		
      self.connect("destroy", gtk.main_quit)
      self.show_all()
		
   def heading(self, widget):
      self.cal.set_display_options(gtk.CALENDAR_SHOW_HEADING)
		
   def dayname(self, widget):
      self.cal.set_display_options(gtk.CALENDAR_SHOW_DAY_NAMES)
		
   def bothflags(self, widget):
      self.cal.set_display_options(gtk.CALENDAR_SHOW_HEADING|gtk.CALENDAR_SHOW_DAY_NAMES)
   def selectdate(self, widget):
      tp = self.cal.get_date()
      dialog = gtk.Dialog("My dialog",
      self,
      gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
      (gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
		
      str1 = str(tp[0])
      str2 = str(tp[1]+1)
      str3 = str(tp[2])
		
      label = gtk.Label("Date selected:"+str3+"-"+str2+"-"+str1)
      dialog.vbox.add(label)
      label.show()
      res = dialog.run()
      dialog.destroy()

PyApp()
gtk.main()

Kode di atas akan menghasilkan output berikut -