PyGTK - Kelas Clipboard

Objek Clipboard menyimpan data bersama antara dua proses atau dua widget dari aplikasi yang sama. Gtk.Clipboard adalah antarmuka tingkat tinggi untuk kelas gtk.SelectionData.

Berikut ini adalah prototipe konstruktor gtk.Clipboard -

gtk.Clipboard(display,selction)

Di sini, parameter tampilan terkait dengan objek gtk.gdk.Display tempat clipboard akan dibuat atau diambil. Secara default, ini adalah perangkat keluaran standar. Parameter pemilihan secara default adalah CLIPBOARD, sebuah objek yang mewakili string internal.

PyGTK menyediakan fungsi kemudahan untuk membuat objek clipboard dengan default.

gtk.clipboard.get()

gtk.Clipboard class memiliki metode berikut -

  • Clipboard.store () - Ini menyimpan data clipboard saat ini di suatu tempat sehingga akan tetap ada bahkan setelah aplikasi ditutup.

  • Clipboard.clear () - Ini menghapus konten clipboard.

  • Clipboard.set_text (teks) - Ini menyetel konten clipboard ke string.

  • Clipboard.request_text () - Ini meminta konten clipboard sebagai teks. Saat teks diterima nanti,callback akan dipanggil dengan data yang ditentukan oleh user_data. Tanda tangan daricallback adalah:

    • def callback (clipboard, teks, data) - teks akan berisi text diambil dari papan klip.

Sebagai demonstrasi papan klip, kode berikut menggunakan dua TextView dan dua tombol pada gtk.Window tingkat atas. Tombol 'Set' memanggilon_set() fungsi yang menempatkan teks dari textView pertama di papan klip.

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

Saat tombol kedua ('diambil') ditekan, data dari clipboard diambil dengan metode request_text () -

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

Isi dari user_data pergi ke metode panggilan balik readclipboard() yang menampilkannya di textview kedua.

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

Contoh

Berikut ini adalah seluruh kode untuk operasi clipboard -

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

Kode di atas akan menghasilkan output berikut -