PyGTK-클립 보드 클래스

Clipboard 객체는 동일한 애플리케이션의 두 프로세스 또는 두 위젯간에 공유 데이터를 보유합니다. gtk.Clipboard는 gtk.SelectionData 클래스를위한 고급 인터페이스입니다.

다음은 gtk.Clipboard 생성자의 프로토 타입입니다.

gtk.Clipboard(display,selction)

여기에서 display 매개 변수는 클립 보드를 만들거나 검색 할 gtk.gdk.Display 객체에 해당합니다. 기본적으로 표준 출력 장치입니다. 선택 매개 변수의 기본값은 인턴 문자열을 나타내는 오브젝트 인 CLIPBOARD입니다.

PyGTK는 기본값으로 클립 보드 객체를 생성하는 편리한 기능을 제공합니다.

gtk.clipboard.get()

gtk.Clipboard 클래스에는 다음과 같은 메소드가 있습니다.

  • Clipboard.store ()-현재 클립 보드 데이터를 어딘가에 저장하여 응용 프로그램이 종료 된 후에도 계속 유지됩니다.

  • Clipboard.clear ()-클립 보드의 내용을 제거합니다.

  • Clipboard.set_text (text)-클립 보드의 내용을 문자열로 설정합니다.

  • Clipboard.request_text ()-클립 보드의 내용을 텍스트로 요청합니다. 나중에 문자를 받으면callback 지정된 데이터로 호출됩니다. user_data. 의 서명callback is :

    • def callback (clipboard, text, data)-text will contain the text 클립 보드에서 가져 왔습니다.

클립 보드의 데모로 다음 코드는 최상위 gtk.Window에서 두 개의 TextView와 두 개의 버튼을 사용합니다. '설정'버튼은on_set() 첫 번째 textView의 텍스트를 클립 보드에 넣는 함수입니다.

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() 두 번째 textview에 표시됩니다.

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

위의 코드는 다음 출력을 생성합니다.