Вы можете использовать внешнюю программу, xsel
:
from subprocess import Popen, PIPE
p = Popen(['xsel','-pi'], stdin=PIPE)
p.communicate(input='Hello, World')
С помощью xsel
вы можете установить буфер обмена, с которым хотите работать.
-p
работает с выбором PRIMARY
. Это средний щелчок один.
-s
работает с выбором SECONDARY
. Я не знаю, используется ли это больше.
-b
работает с выбором CLIPBOARD
. Это твой Ctrl + V
один.
Подробнее о буферах обмена X здесь и здесь .
Быстрая и грязная функция, которую я создал, чтобы справиться с этим:
def paste(str, p=True, c=True):
from subprocess import Popen, PIPE
if p:
p = Popen(['xsel', '-pi'], stdin=PIPE)
p.communicate(input=str)
if c:
p = Popen(['xsel', '-bi'], stdin=PIPE)
p.communicate(input=str)
paste('Hello', False) # pastes to CLIPBOARD only
paste('Hello', c=False) # pastes to PRIMARY only
paste('Hello') # pastes to both
Вы также можете попробовать PyGTK clipboard
:
import pygtk
pygtk.require('2.0')
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text('Hello, World')
clipboard.store()
Это работает с выбором Ctrl + V
для меня.