PyGTK - संवाद वर्ग

एक डायलॉग विजेट आमतौर पर एक मूल विंडो के शीर्ष पर पॉप-अप विंडो के रूप में उपयोग किया जाता है। एक संवाद का उद्देश्य उपयोगकर्ता से कुछ डेटा एकत्र करना और इसे मूल विंडो पर भेजना है। डायलॉग मोडल हो सकता है (जहां यह मूल फ्रेम को ब्लॉक करता है) या मॉडलस (डायलॉग फ्रेम को बायपास किया जा सकता है)।

PyGTK लाइब्रेरी का डायलॉग विजेट लंबवत रूप से एक विंडो विभाजन है। इसके शीर्ष भाग में, एक gtk.VBox है जिसमें लेबल या प्रविष्टि विजेट पैक किए गए हैं। नीचे के खंड को एक्शन_एरिया कहा जाता है जिसमें एक या अधिक बटन रखे जाते हैं। दो क्षेत्रों को gtk.HSeparator द्वारा अलग किया जाता है।

gtk.Dialog क्लास में निम्न कंस्ट्रक्टर हैं -

dlg = gtk.Dialog (Title = None, parent = None, flags = 0, buttons = None)

कहाँ पे,

  • Title - क्या संवाद डायलॉग विजेट के शीर्षक बार में दिखाई दे रहा है।

  • Parent - टॉपप्ले विंडो का संदर्भ है जिसमें से संवाद पॉप अप होता है।

  • Flag- डायलॉग के संचालन को नियंत्रित करने वाले स्थिरांक को परिभाषित करता है। परिभाषित स्थिरांक हैं -

gtk.DIALOG_MODAL यदि सेट किया जाता है, तो संवाद सभी कीबोर्ड घटनाओं को पकड़ लेता है
gtk.DIALOG_DESTROY_WITH_PARENT यदि सेट किया जाता है, तो संवाद तब नष्ट हो जाता है जब उसका अभिभावक होता है।
gtk.DIALOG_NO_SEPARATOR यदि सेट किया गया है, तो बटन के ऊपर कोई विभाजक पट्टी नहीं है।

एक बटन क्या है?

एक बटन एक tuple ऑब्जेक्ट है जिसमें एक शेयर आईडी (या पाठ) और उसकी प्रतिक्रिया आईडी के साथ gtk.Button के जोड़े हैं।

प्रतिक्रिया आईडी किसी भी संख्या या पूर्वनिर्धारित प्रतिक्रिया आईडी स्थिरांक में से एक हो सकती है -

  • gtk.RESPONSE_NONE
  • gtk.RESPONSE_REJECT
  • gtk.RESPONSE_ACCEPT
  • gtk.RESPONSE_DELETE_EVENT
  • gtk.RESPONSE_OK
  • gtk.RESPONSE_CANCEL
  • gtk.RESPONSE_CLOSE
  • gtk.RESPONSE_YES
  • gtk.RESPONSE_NO
  • gtk.RESPONSE_APPLY
  • gtk.RESPONSE_HELP

Gtk.Dialog क्लास के महत्वपूर्ण तरीके नीचे दिए गए हैं -

  • add_button() - द्वारा निर्दिष्ट पाठ के साथ एक बटन जोड़ता है button_text (या एक स्टॉक बटन, अगर बटन_टेक्स्ट एक स्टॉक आईडी है) क्रिया में

  • response() - response_id में निर्दिष्ट मान के साथ "प्रतिक्रिया" संकेत का उत्सर्जन करता है

  • run() - डायलॉग प्रदर्शित करता है और जब delete_event उत्सर्जित हो जाता है, तब response_id लौटाता है।

  • set_default_response() - निर्दिष्ट के साथ संवाद के कार्रवाई क्षेत्र में अंतिम विजेट सेट करता है response_id संवाद के लिए डिफ़ॉल्ट विजेट के रूप में।

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

बंद करे संवाद बंद होने पर यह उत्सर्जित होता है।
प्रतिक्रिया यह तब उत्सर्जित होता है जब एक क्रिया_कार्य विजेट सक्रिय हो जाता है (बटन "क्लिक किया गया"), डायलॉग को एक डिलीट_वेंट प्राप्त होता है या एप्लिकेशन प्रतिक्रिया () विधि को कॉल करता है।

डायलॉग विजेट के एक्शन_अर में दो बटन स्टॉक आईडी gtk.STOCK.CANCEL और gtk.STOCK_OK का उपयोग करते हैं। वे प्रतिक्रिया आईडी gtk से जुड़े हैं। RESPONSE_REJECT और gtk। क्रमशः RESPONSE_ACCEPT। किसी भी बटन को दबाने पर डायलॉग बंद हो जाता है। रन () विधियाँ संबंधित अनुक्रिया आईडी लौटाती हैं जिसका उपयोग आगे की प्रक्रिया के लिए किया जा सकता है।

निम्न कोड प्रदर्शित करता है एक शीर्ष स्तर gtk। इसमें एक बटन के साथ। जब बटन पर क्लिक किया जाता है, तो एक डायलॉग एक लेबल और दो बटन के साथ दिखाई देता है।

उदाहरण

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

import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Dialog Demo")
      self.set_default_size(250, 200)
      fixed = gtk.Fixed()
      btn = gtk.Button("Show")
      btn.connect("clicked",self.show_sialog)
      fixed.put(btn,100,100)
      self.add(fixed)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      
   def show_sialog(self, widget, data=None):
      dialog = gtk.Dialog("My dialog",
         self,
         gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
         (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
         gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
      label = gtk.Label("Simple dialog")
      dialog.vbox.add(label)
      label.show()
      res = dialog.run()
      print res
      dialog.destroy()
if __name__ == '__main__':
   PyApp()
   gtk.main()

उपरोक्त कोड निम्नलिखित आउटपुट का उत्पादन करता है -

पूर्वनिर्धारित संवाद विजेट

PyGTK एपीआई में कई पूर्व-संवाद डायलॉग विजेट हैं -

  • MessageDialog
  • AboutDialog
  • ColorSelectionDialog
  • FontSelectionDialog
  • FileChooserDialog

PyGTK में उपरोक्त मानक संवाद के कामकाज को प्रदर्शित करने के लिए, मेनू आइटम के साथ एक मेनू जिसमें प्रत्येक आइटम पर क्लिक करते समय एक डायलॉग का उपयोग किया जाता है, को निम्न कार्यक्रम में एक gtk.Window में डाल दिया जाता है। कॉलबैक फ़ंक्शन प्रत्येक मेनू आइटम के सिग्नल को सक्रिय करने के लिए सूचीबद्ध है। आप प्रत्येक प्रकार के संवाद विजेट के लिए दिए गए स्पष्टीकरण को भी समझ सकते हैं।

उदाहरण

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

import gtk, pango

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Dialog Boxes")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      mb = gtk.MenuBar()
      menu1 = gtk.Menu()
      file = gtk.MenuItem("_File")
      file.set_submenu(menu1)
      msg = gtk.MenuItem("MessageDialog")
      
      menu1.append(msg)
      abt = gtk.MenuItem("AboutDialog")
      menu1.append(abt)
      colo = gtk.MenuItem("colorDialog")
      menu1.append(colo)
      font = gtk.MenuItem("FontSelectionDialog")
      menu1.append(font)
      fl = gtk.MenuItem("FileChooserDialog")
      menu1.append(fl)
      mb.append(file)
      
      vbox = gtk.VBox(False, 2)
      vbox.pack_start(mb, False, False, 0)
      self.add(vbox)
      self.text = gtk.Label("TutorialsPoint")
      vbox.pack_start(self.text, True, True, 0)
      msg.connect("activate",self.on_msgdlg)
      abt.connect("activate",self.on_abtdlg)
      font.connect("activate",self.on_fntdlg)
      colo.connect("activate",self.on_color)
      
      fl.connect("activate", self.on_file)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   def on_msgdlg(self, widget):
      #MessageDialog usage code
   def on_abtdlg(self, widget):
      #AboutDialog usage code
   def on_fntdlg(self,widget):
      #FontSelectionDialog usage code
   def on_color(self, widget):
      #ColorChooserDialog usage cde
   Def on_file(self, widget):
      #FileChooserDialog usage code
if __name__ == '__main__':
   PyApp()
   gtk.main()

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