PyGTK - क्लिपबोर्ड क्लास

एक क्लिपबोर्ड ऑब्जेक्ट दो प्रक्रियाओं या एक ही एप्लिकेशन के दो विजेट्स के बीच साझा डेटा रखता है। Gtk.Clipboard gtk.SelectionData वर्ग के लिए एक उच्च स्तरीय इंटरफ़ेस है।

निम्नलिखित gtk.Clipboard निर्माता का एक प्रोटोटाइप है -

gtk.Clipboard(display,selction)

यहां, प्रदर्शन पैरामीटर gtk.gdk.Display ऑब्जेक्ट से मेल खाता है, जिसके लिए क्लिपबोर्ड बनाया या पुनर्प्राप्त किया जाना है। डिफ़ॉल्ट रूप से, यह मानक आउटपुट डिवाइस है। चयन पैरामीटर CLIPBOARD के लिए चूक, एक प्रशिक्षु स्ट्रिंग का प्रतिनिधित्व करने वाली वस्तु।

PyGTK चूक के साथ क्लिपबोर्ड ऑब्जेक्ट बनाने के लिए एक सुविधा फ़ंक्शन प्रदान करता है।

gtk.clipboard.get()

gtk.Clipboard वर्ग में निम्नलिखित विधियाँ हैं -

  • Clipboard.store () - यह वर्तमान क्लिपबोर्ड डेटा को कहीं संग्रहीत करता है ताकि आवेदन छोड़ने के बाद भी यह इधर-उधर रहे।

  • Clipboard.clear () - यह क्लिपबोर्ड की सामग्री को हटा देता है।

  • क्लिपबोर्ड.सेट_टेक्स्ट (पाठ) - यह क्लिपबोर्ड की सामग्री को स्ट्रिंग में सेट करता है।

  • Clipboard.request_text () - यह क्लिपबोर्ड की सामग्री को पाठ के रूप में अनुरोध करता है। जब पाठ बाद में प्राप्त होता है,callback द्वारा निर्दिष्ट डेटा के साथ बुलाया जाएगा user_data। के हस्ताक्षरcallback है:

    • def कॉलबैक (क्लिपबोर्ड, पाठ, डेटा) - पाठ में होगा text क्लिपबोर्ड से पुनर्प्राप्त किया गया।

क्लिपबोर्ड के प्रदर्शन के रूप में, निम्न कोड दो टेक्स्ट व्यू और दो बटन का उपयोग करता है एक toplevel gtk.Window पर। 'सेट' बटन कॉल करता हैon_set() फंक्शन जो टेक्स्ट को पहले टेक्स्ट व्यू से क्लिपबोर्ड पर डालता है।

buf = self.tv1.get_buffer()
text = buf.get_text(buf.get_start_iter(), buf.get_end_iter())
self.clipboard = gtk.clipboard_get()
self.clipboard.set_text(text)
self.clipboard.store()

जब दूसरा बटन ('पुनः प्राप्त') दबाया जाता है, क्लिपबोर्ड से डेटा request_text द्वारा लाया जाता है ()

self.clipboard.request_text(self.readclipboard,        user_data = None)

की सामग्री user_data कॉलबैक विधि पर जाता है readclipboard() जो इसे दूसरे टेक्स्टव्यू पर प्रदर्शित करता है।

def readclipboard(self, clipboard, text, data):
   buffer = gtk.TextBuffer()
   buffer.set_text(text)
   self.tv2.set_buffer(buffer)

उदाहरण

क्लिपबोर्ड ऑपरेशन के लिए पूरा कोड निम्नलिखित है -

import gtk

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      
	  self.set_title("Clipboard demo")
      self.set_size_request(300,200)
      self.set_position(gtk.WIN_POS_CENTER)
		
      vbox = gtk.VBox(False, 5)
      self.tv1 = gtk.TextView()
		
      vbox.add(self.tv1)
      self.tv2 = gtk.TextView()
		
      vbox.add(self.tv2)
      hbox = gtk.HBox(True, 3)
		
      Set = gtk.Button("set")
      Set.set_size_request(70, 30)
		
      retrieve = gtk.Button("retrieve")
      hbox.add(Set)
      hbox.add(retrieve)
      halign = gtk.Alignment(1, 0, 0, 0)
      halign.add(hbox)
		
      vbox.pack_start(halign, False, False, 3)
      self.add(vbox)
      Set.connect("clicked", self.on_set)
      retrieve.connect("clicked", self.on_retrieve)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
		
   def on_set(self, widget):
      buf = self.tv1.get_buffer()
      text = buf.get_text(buf.get_start_iter(), buf.get_end_iter())
      self.clipboard = gtk.clipboard_get()
      self.clipboard.set_text(text)
      self.clipboard.store()
		
   def on_retrieve(self, widget):
      self.clipboard.request_text(self.readclipboard, user_data=None)
		
   def readclipboard(self, clipboard, text, data):
      buffer = gtk.TextBuffer()
      buffer.set_text(text)
      self.tv2.set_buffer(buffer)

PyApp()
gtk.main()

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