PyGTK - कॉम्बोबॉक्स क्लास

ComboBox किसी भी GUI टूलकिट में एक शक्तिशाली और लोकप्रिय विजेट है। यह उन मदों की एक ड्रॉपडाउन सूची प्रदान करता है, जिनसे कोई उपयोगकर्ता चुन सकता है। Gtk.ComboBox विजेट सेललैट इंटरफ़ेस को लागू करता है और वस्तुओं के प्रदर्शन को प्रबंधित करने के लिए कई तरीके प्रदान करता है।

Gtk.ComboBox क्लास का ऑब्जेक्ट लिस्टसोर के साथ जुड़ा हुआ है, जो एक सूची मॉडल है जिसका उपयोग विगेट्स के साथ किया जा सकता है जो आइटम का संग्रह प्रदर्शित करते हैं। आइटम्स को परिशिष्ट () पद्धति से सूची में जोड़ा जाता है। इसके अलावा, एक CellRendererText ऑब्जेक्ट को कॉम्बोक्स में बनाया और पैक किया जाता है।

एक कॉम्बोक्स स्थापित करने के लिए इन चरणों का पालन करें।

combobox = gtk.ComboBox()
store = gtk.ListStore(gobject.TYPE_STRING)
cell = gtk.CellRendererText()
combobox.pack_start(cell)
combobox.add_attribute(cell, 'text', 0)

PyGTK एक सुविधा विधि प्रदान करता है - gtk.combo_box_new_text()एक सूची स्टोर का उपयोग करने के बजाय एक कॉम्बो बॉक्स बनाने के लिए। एसोसिएटेड सुविधा विधियाँ append_text (), prepend_text (), insert_text () और remove_text () का उपयोग कॉम्बो बॉक्सकंटेंट्स को प्रबंधित करने के लिए किया जाता है।

gtk.ComboBox क्लास के निम्नलिखित तरीके हैं -

S.NO तरीके और विवरण
1

set_wrap_width()

पॉपअप टेबल लेआउट में प्रदर्शित होने वाले कॉलम की संख्या निर्धारित करता है

2

get_active()

"सक्रिय" संपत्ति का मूल्य लौटाता है जो वर्तमान में सक्रिय आइटम के मॉडल में सूचकांक है

3

set_active()

निर्दिष्ट मॉडल सूचकांक के साथ आइटम को combo_box के सक्रिय आइटम सेट करता है

4

set_model()

कॉम्बो बॉक्स द्वारा उपयोग किए जाने वाले मॉडल को सेट करता है

5

append_text()

कॉम्बो बॉक्स सूची की दुकान में संग्रहीत तार की सूची के लिए पाठ द्वारा निर्दिष्ट स्ट्रिंग को लागू करता है

6

Insert_text()

स्थिति द्वारा निर्दिष्ट सूचकांक में कॉम्बो बॉक्स gtk.ListStore में पाठ द्वारा निर्दिष्ट स्ट्रिंग सम्मिलित करता है

7

prepend_text()

पाठ द्वारा निर्दिष्ट स्ट्रिंग को सूची स्टोर में संग्रहीत स्ट्रिंग्स की सूची में प्रस्तुत करता है

8

remove_text()

संबंधित सूची में स्थिति द्वारा निर्दिष्ट सूचकांक में स्ट्रिंग को हटाता है

9

get_active_text()

वर्तमान में सक्रिय स्ट्रिंग लौटाता है

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

बदला हुआ यह तब उत्सर्जित होता है जब कॉम्बो बॉक्स में एक नया आइटम चुना जाता है
move_active यह एक कीबाइंडिंग संकेत है जो सक्रिय चयन को स्थानांतरित करने के लिए उत्सर्जित होता है।
अचानक गायब हो जाना यह एक कीबाइंडिंग संकेत है जो कॉम्बो बॉक्स सूची को पॉपडाउन करने के लिए उत्सर्जित होता है। इस सिग्नल के लिए डिफ़ॉल्ट बाइंडिंग Alt + Up और एस्केप हैं
पॉप अप यह एक कीबाइंडिंग संकेत है जो कॉम्बो बॉक्स सूची को पॉपअप करने के लिए उत्सर्जित होता है। इस सिग्नल के लिए डिफ़ॉल्ट बाइंडिंग Alt + Down हैं।

कॉम्बोबॉक्स के प्रदर्शन के लिए दो उदाहरण कोड नीचे दिए गए हैं।

उदाहरण 1

इस उदाहरण में, एक ListStore लोकप्रिय Python GUI टूलकिट्स के नाम से आबाद है और यह एक कॉम्बो बॉक्स विजेट के साथ जुड़ा हुआ है। जैसा कि एक उपयोगकर्ता एक विकल्प बनाता है, परिवर्तित संकेत उत्सर्जित होता है। यह उपयोगकर्ता की पसंद को प्रदर्शित करने के लिए कॉलबैक फ़ंक्शन से जुड़ा है।

import pygtk
pygtk.require('2.0')
import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("ComboBox with ListStore")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      combobox = gtk.ComboBox()
      store = gtk.ListStore(str)
      cell = gtk.CellRendererText()
      combobox.pack_start(cell)
      combobox.add_attribute(cell, 'text', 0)
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      fixed.put(combobox, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      
      store.append (["PyQt"])
      store.append (["Tkinter"])
      store.append (["WxPython"])
      store.append (["PyGTK"])
      store.append (["PySide"])
      combobox.set_model(store)
      combobox.connect('changed', self.on_changed)
      combobox.set_active(0)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
      return
   
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
      return
      
if __name__ == '__main__':
PyApp()
gtk.main()

निष्पादन के बाद, कार्यक्रम निम्नलिखित आउटपुट प्रदर्शित करता है -

उदाहरण 2

कार्यक्रम का दूसरा संस्करण सुविधा विधि का उपयोग करता है combo_box_new_text()इसमें तार जोड़ने के लिए कॉम्बो बॉक्स और append_text () फ़ंक्शन बनाने के लिए। दोनों कार्यक्रमों में,get_active_text() विधि का उपयोग उपयोगकर्ता के चयन को प्राप्त करने और खिड़की पर एक लेबल पर प्रदर्शित करने के लिए किया जाता है।

import gtk

class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Simple ComboBox")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      cb = gtk.combo_box_new_text()
      cb.connect("changed", self.on_changed)
      cb.append_text('PyQt')
      cb.append_text('Tkinter')
      cb.append_text('WxPython')
      cb.append_text('PyGTK')
      cb.append_text('PySide')
      
      fixed = gtk.Fixed()
      lbl = gtk.Label("select a GUI toolkit")
      fixed.put(lbl, 25,75)
      
      fixed.put(cb, 125,75)
      lbl2 = gtk.Label("Your choice is:")
      fixed.put(lbl2, 25,125)
      
      self.label = gtk.Label("")
      fixed.put(self.label, 125,125)
      self.add(fixed)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   
   def on_changed(self, widget):
      self.label.set_label(widget.get_active_text())
if __name__ == '__main__':
   PyApp()
   gtk.main()

इस प्रोग्राम का आउटपुट पिछले प्रोग्राम की तरह ही है।