Pygtk-clipboard-class
提供:Dev Guides
PyGTK-クリップボードクラス
クリップボードオブジェクトは、同じアプリケーションの2つのプロセスまたは2つのウィジェット間で共有データを保持します。 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.set_text(text)-これはクリップボードの内容を文字列に設定します。
- Clipboard.request_text()-これは、クリップボードの内容をテキストとして要求します。 テキストが後で受信されると、 callback は user_data で指定されたデータで呼び出されます。 callback の署名は次のとおりです。
- defコールバック(クリップボード、テキスト、データ)-テキストには、クリップボードから取得した*テキスト*が含まれます。
クリップボードのデモとして、次のコードではトップレベルのgtk.Windowで2つのTextViewと2つのボタンを使用しています。 「設定」ボタンは、クリップボードの最初のtextViewからテキストを配置する* 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()
2番目のボタン(「取得」)が押されると、クリップボードからのデータがrequest_text()メソッドによってフェッチされます-
self.clipboard.request_text(self.readclipboard, user_data = None)
*user_data* のコンテンツは、コールバックメソッド* readclipboard()*に送られ、2番目の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()
上記のコードは、次の出力を生成します-