- PyGTK 教程
- PyGTK - 首頁
- PyGTK - 簡介
- PyGTK - 環境
- PyGTK - Hello World
- PyGTK - 重要類
- PyGTK - 視窗類
- PyGTK - 按鈕類
- PyGTK - 標籤類
- PyGTK - 輸入框類
- PyGTK - 訊號處理
- PyGTK - 事件處理
- PyGTK - 容器
- PyGTK - 箱式容器類
- PyGTK - 按鈕箱類
- PyGTK - 對齊類
- PyGTK - 事件框類
- PyGTK - 佈局類
- PyGTK - 組合框類
- PyGTK - 切換按鈕類
- PyGTK - 複選框類
- PyGTK - 單選按鈕類
- PyGTK - 選單欄、選單和選單項
- PyGTK - 工具欄類
- PyGTK - 調整類
- PyGTK - 範圍類
- PyGTK - 刻度類
- PyGTK - 捲軸類
- PyGTK - 對話方塊類
- PyGTK - 訊息對話方塊類
- PyGTK - 關於對話方塊類
- PyGTK - 字型選擇對話方塊
- PyGTK - 顏色選擇對話方塊
- PyGTK - 檔案選擇對話方塊
- PyGTK - 筆記本類
- PyGTK - 框架類
- PyGTK - 帶縱橫比的框架類
- PyGTK - 樹形檢視類
- PyGTK - 分割窗格類
- PyGTK - 狀態列類
- PyGTK - 進度條類
- PyGTK - 視口類
- PyGTK - 滾動視窗類
- PyGTK - 箭頭類
- PyGTK - 影像類
- PyGTK - 繪圖區類
- PyGTK - 旋轉按鈕類
- PyGTK - 日曆類
- PyGTK - 剪貼簿類
- PyGTK - 標尺類
- PyGTK - 超時
- PyGTK - 拖放
- PyGTK 有用資源
- PyGTK - 快速指南
- PyGTK - 有用資源
- PyGTK - 討論
PyGTK - 剪貼簿類
剪貼簿物件儲存兩個程序或同一應用程式中兩個部件之間共享的資料。gtk.Clipboard 是 gtk.SelectionData 類的更高級別介面。
以下是 gtk.Clipboard 建構函式的原型:
gtk.Clipboard(display,selction)
這裡,display 引數對應於要為其建立或檢索剪貼簿的 gtk.gdk.Display 物件。預設情況下,它是標準輸出裝置。selection 引數預設為 CLIPBOARD,一個表示內部字串的物件。
PyGTK 提供了一個便利函式,可以使用預設值建立剪貼簿物件。
gtk.clipboard.get()
gtk.Clipboard 類具有以下方法:
Clipboard.store() - 將當前剪貼簿資料儲存在某個位置,以便即使應用程式退出後也能保留。
Clipboard.clear() - 刪除剪貼簿內容。
Clipboard.set_text(text) - 將剪貼簿的內容設定為字串。
Clipboard.request_text() - 請求剪貼簿的內容作為文字。稍後收到文字時,將使用user_data指定的資料呼叫callback。callback的簽名為
def callback(clipboard, text, data) - text 將包含從剪貼簿檢索到的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()
以上程式碼將生成以下輸出:
廣告