PyGTK - कैलेंडर वर्ग

PyGTK टूलकिट में कैलेंडर विजेट एक समय में एक महीने के दृश्य के साथ एक सरल कैलेंडर प्रदर्शित करता है। माह और वर्ष बदलने के लिए नेविगेशन नियंत्रण डिफ़ॉल्ट रूप से प्रदर्शित किए जाते हैं। प्रदर्शन विकल्प उपयुक्त रूप से कॉन्फ़िगर किए जा सकते हैं।

महीने की संपत्ति का मूल्य 0 से 11 के बीच है, और तारीख की संपत्ति 1 से 31 के बीच है।

Gtk.Calendar ऑब्जेक्ट बनाने के लिए एक सरल कंस्ट्रक्टर है -

cal = gtk.Calendar()

डिफ़ॉल्ट प्रदर्शन शैली वर्तमान माह और वर्ष के साथ-साथ दिनों के नामों को भी दिखाती है।

Gtk.Calendar वर्ग के निम्नलिखित तरीके हैं -

  • Calendar.select_month (mm, yy) - यह कैलेंडर डिस्प्ले को निर्दिष्ट में बदलता है mm तथा yy

  • Calendar.select_day (dd) - यह निर्दिष्ट का चयन करता है dd कैलेंडर पर जब इसका मान 1 और 31 के बीच होता है dd 0 है तो वर्तमान दिन का चयन हटा दिया जाता है।

  • Calendar.display_options () - इसके द्वारा निर्दिष्ट मूल्य के लिए कैलेंडर प्रदर्शन विकल्प सेट करता है flags। संभावित प्रदर्शन विकल्प निम्नलिखित का एक संयोजन हैं:

gtk.CALENDAR_SHOW_HEADING निर्दिष्ट करता है कि महीने और वर्ष को प्रदर्शित किया जाना चाहिए।
gtk.CALENDAR_SHOW_DAY_NAMES निर्दिष्ट करता है कि तीन पत्र दिन विवरण मौजूद होना चाहिए।
gtk.CALENDAR_NO_MONTH_CHANGE कैलेंडर के साथ महीनों को बदलने से उपयोगकर्ता को रोकता है।
gtk.CALENDAR_SHOW_WEEK_NUMBERS कैलेंडर के बाईं ओर नीचे वर्तमान वर्ष के प्रत्येक सप्ताह की संख्या प्रदर्शित करता है।
gtk.CALENDAR_WEEK_START_MONDAY डिफ़ॉल्ट रविवार के बजाय सोमवार को कैलेंडर सप्ताह शुरू होता है।
  • Calendar.get_date () - यह कैलेंडर का वर्तमान वर्ष, माह और चयनित दिन संख्याओं को एक टपल (वर्ष, माह, दिन) के रूप में प्राप्त करता है।

Gtk.Calendar विजेट निम्नलिखित संकेतों का उत्सर्जन करता है -

दिन-चयनित यह तब उत्सर्जित होता है जब किसी दिन को उपयोगकर्ता द्वारा या प्रोग्रामेटिक रूप से चुना जाता है।
माह-बदल यह उत्सर्जित होता है जब कैलेंडर माह को प्रोग्रामेटिक रूप से या उपयोगकर्ता द्वारा बदल दिया जाता है।
अगले महीने यह तब उत्सर्जित होता है जब उपयोगकर्ता कैलेंडर हेडर में "अगले महीने" नेविगेशन नियंत्रण पर क्लिक करता है।
अगले साल यह तब उत्सर्जित होता है जब उपयोगकर्ता कैलेंडर हेडर में "अगले वर्ष" नेविगेशन नियंत्रण पर क्लिक करता है।
पिछला महीने यह तब उत्सर्जित होता है जब उपयोगकर्ता कैलेंडर हेडर में "प्रचलित-माह" नेविगेशन नियंत्रण पर क्लिक करता है।
पिछला साल यह तब उत्सर्जित होता है जब उपयोगकर्ता कैलेंडर हेडर में "प्रचलित-वर्ष" नेविगेशन नियंत्रण पर क्लिक करता है।

निम्नलिखित उदाहरण में, एक gtk.Calendar नियंत्रण और चार बटन toplevel विंडो में रखे गए हैं।

जब 'शीर्षक' बटन पर क्लिक किया जाता है, तो कैलेंडर के प्रदर्शन विकल्प SHOW_HEADING पर सेट किए जाते हैं -

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

जब उपयोगकर्ता 'दिन का नाम' बटन पर क्लिक करता है, तो कॉलबैक SHOW_DAY_NAMES में प्रदर्शन विकल्प सेट करता है -

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

'दोनों' बटन दबाए जाने पर दोनों प्रदर्शन विकल्प सक्षम होते हैं। शुरुआत करने के लिए, प्रदर्शन विकल्पों के सभी झंडे को 0 पर सेट करके हटा दिया जाता है।

self.cal.set_display_options(0)

'सेट' बटन एक संदेश बॉक्स को दिखाता है जो वर्तमान में चिह्नित तिथि प्रदर्शित करता है।

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

उदाहरण

निम्नलिखित कोड देखें -

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

उपरोक्त कोड निम्नलिखित आउटपुट उत्पन्न करेगा -