PyGTK - Zwischenablage-Klasse

Ein Zwischenablageobjekt enthält gemeinsam genutzte Daten zwischen zwei Prozessen oder zwei Widgets derselben Anwendung. Das gtk.Clipboard ist eine übergeordnete Schnittstelle für die Klasse gtk.SelectionData.

Das Folgende ist ein Prototyp des Konstruktors gtk.Clipboard -

gtk.Clipboard(display,selction)

Hier entspricht der Anzeigeparameter dem Objekt gtk.gdk.Display, für das die Zwischenablage erstellt oder abgerufen werden soll. Standardmäßig ist es das Standardausgabegerät. Der Auswahlparameter ist standardmäßig CLIPBOARD, ein Objekt, das eine internierte Zeichenfolge darstellt.

PyGTK bietet eine praktische Funktion zum Erstellen eines Zwischenablageobjekts mit Standardeinstellungen.

gtk.clipboard.get()

Die Klasse gtk.Clipboard verfügt über die folgenden Methoden:

  • Clipboard.store () - Hier werden die aktuellen Daten der Zwischenablage irgendwo gespeichert, sodass sie auch nach dem Beenden der Anwendung erhalten bleiben.

  • Clipboard.clear () - Hiermit wird der Inhalt der Zwischenablage entfernt.

  • Clipboard.set_text (text) - Hiermit wird der Inhalt der Zwischenablage auf die Zeichenfolge festgelegt.

  • Clipboard.request_text () - Hiermit wird der Inhalt der Zwischenablage als Text angefordert. Wenn der Text später empfangen wird,callback wird mit den von angegebenen Daten aufgerufen user_data. Die Unterschrift voncallback ist:

    • def Rückruf (Zwischenablage, Text, Daten) - Text enthält die text aus der Zwischenablage abgerufen.

Als Demonstration der Zwischenablage verwendet der folgende Code zwei TextViews und zwei Schaltflächen in einem gtk.Window auf oberster Ebene. Die 'Set'-Taste ruft dieon_set() Funktion, mit der der Text aus der ersten Textansicht in die Zwischenablage verschoben wird.

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

Wenn die zweite Schaltfläche ('abgerufen') gedrückt wird, werden die Daten aus der Zwischenablage mit der Methode request_text () abgerufen.

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

Der Inhalt von user_data geht zu einer Rückrufmethode readclipboard() Dies zeigt es in der zweiten Textansicht an.

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

Beispiel

Das Folgende ist der gesamte Code für den Betrieb der Zwischenablage -

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

Der obige Code generiert die folgende Ausgabe: