2010-08-26 65 views
2

伊夫嘗試了GTK的方法,但它是非常慢和用於「大」圖像不起作用(120 KB)粘貼圖像在Python剪貼板在linux

import pygtk 
pygtk.require('2.0') 
import gtk 
import os 
def copy_image(f): 
    assert os.path.exists(f), "file does not exist" 
    clipboard = gtk.clipboard_get() 
    img = gtk.Image() 
    img.set_from_file(f) 
    clipboard.set_image(img.get_pixbuf()) 
    clipboard.store() 

伊夫試圖XCLIP和只有它文本,所以還有什麼其他的選擇? ubuntu使用什麼?

+0

「Ubuntu」不使用任何東西,Ubuntu中的應用程序可能會使用各種編程語言和圖形工具包。 – JanC 2010-08-26 09:03:35

回答

3

從/到剪貼板獲取文本的一種方法是使用XSel。這並不漂亮,需要你與外部程序進行交流。但它有效,速度很快。

不知道這是最好的解決辦法,但我知道它的工作原理:)

[編輯]您說的對,似乎xsel不支持圖像。

在那種情況下,稍微修改GTK版本如何。

def copy_image(f): 
    assert os.path.exists(f), "file does not exist" 
    image = gtk.gdk.pixbuf_new_from_file(f) 

    clipboard = gtk.clipboard_get() 
    clipboard.set_image(image) 
    clipboard.store() 

請注意,您可能需要更改所有者,如果你的程序退出的時候了,因爲X如何跟蹤剪貼板中。

+0

似乎不粘貼圖像...只有文字 – josh 2010-08-26 04:22:02

+0

@josh:看起來你是對的,我已經添加了一個更快的替代方法。 – Wolph 2010-08-26 11:03:59

+0

謝謝!工作更快,但是這很奇怪,它似乎適用於粘貼到gimp,但粘貼到gnumeric或openoffice電子表格時,它不會粘貼!呃......有什麼想法? – josh 2010-08-26 22:44:15

1

您可能希望使用set_with_data方法,但這樣做的工作稍微多一些(圖像數據僅在應用程序請求時發送,因此需要回調函數)。當您粘貼到同一應用程序而不是另一個應用程序時,這也具有優勢。