2010-11-29 18 views
14

Estoy tratando de escribir una función que copie un parámetro de cadena al portapapeles. Tengo la intención de usar esto en un script de Python en el que he estado trabajando. Esto es lo que tengo hasta ahora (que se encuentra la mayor parte de este fragmento en otro post desbordamiento de pila):Herramienta independiente de la plataforma para copiar texto en el portapapeles

from tkinter import Tk 

    def copy_to_clipboard(text): 
     text = str(text) 
     r = Tk() 
     r.withdraw() 
     r.clipboard_clear() 
     r.clipboard_append(text) 
     r.destroy() 

Mi problema es que cuando el guión se detiene, el texto copiado ya no está en el portapapeles es.

¿Existe alguna alternativa o solución posible a esto?

¿Existe una buena solución independiente de plataforma para mi problema? ¿O tendré que verificar en qué sistema operativo está el usuario y proceder desde allí?

+0

remove r.destroy(): P –

+0

he intentado que ya y el mismo problema persiste. Gracias sin embargo. – aonbyte

Respuesta

11

Sí, hay uno para ti :)

Uso pyperclip.

+0

Se ve bien. Muchas gracias =) – aonbyte

+0

Muy bien, primero necesitas instalar xclip. – qed

4

Supongo que está ejecutando Linux con Gnome.

Es un comportamiento normal en Gnome, tan pronto como la fuente de la copia desaparece, p. al cerrar la ventana del navegador desde la que copió, también se eliminan los datos del portapapeles. La solución alternativa es instalar el gnome-clipboard-daemon que preservará el estado del portapapeles como lo hacen Windows y KDE.

Por lo tanto, no hay mucho que pueda hacer cuando se ejecuta bajo Gnome, además de dejar la secuencia de comandos ejecutándose.

+0

Pero esto agregaría una dependencia (de algún tipo) de gnome-clipboard-daemon, ¿verdad? – Sparragus

+0

@Sparragus Sí, el daemon tiene que ejecutarse en segundo plano. –

+0

Uso Ubuntu 12.04, no existe tal cosa en el repositorio. – qed

Cuestiones relacionadas