¿Cómo copio una cadena al portapapeles?
Estoy intentando crear una aplicación básica de Windows que cree una cadena a partir de la entrada del usuario y luego la agregue al portapapeles. ¿Cómo copio una cadena al portapapeles usando Python?
En realidad, pywin32
parece ctypes
excesivo para esta sencilla tarea. tkinter
es un marco GUI multiplataforma, que viene con Python de forma predeterminada y tiene métodos de acceso al portapapeles junto con otras cosas interesantes.
Si todo lo que necesita es poner algo de texto en el portapapeles del sistema, esto lo hará:
from tkinter import Tk # in Python 2, use "Tkinter" instead
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.update() # now it stays on the clipboard after the window is closed
r.destroy()
Y eso es todo, no es necesario perder el tiempo con bibliotecas de terceros específicas de la plataforma.
Si está utilizando Python 2, reemplácelo tkinter
con Tkinter
.
No tenía una solución, sólo una solución alternativa.
Windows Vista en adelante tiene un comando incorporado llamado clip
que toma el resultado de un comando desde la línea de comando y lo coloca en el portapapeles. Por ejemplo, ipconfig | clip
.
Entonces hice una función con el os
módulo que toma una cadena y la agrega al portapapeles usando la solución incorporada de Windows.
import os
def addToClipBoard(text):
command = 'echo ' + text.strip() + '| clip'
os.system(command)
# Example
addToClipBoard('penny lane')
# Penny Lane is now in your ears, eyes, and clipboard.
Sin embargo, como se señaló anteriormente en los comentarios, una desventaja de este enfoque es que el echo
comando agrega automáticamente una nueva línea al final del texto. Para evitar esto, puedes utilizar una versión modificada del comando:
def addToClipBoard(text):
command = 'echo | set /p nul=' + text.strip() + '| clip'
os.system(command)
Si está utilizando Windows XP, funcionará simplemente siguiendo los pasos en Copiar y pegar desde el símbolo del sistema de Windows XP Pro directamente al Portapapeles .
Puede utilizar pyperclip , módulo de portapapeles multiplataforma. O Xerox : módulo similar, excepto que requiere el módulo Python win32 para funcionar en Windows.
La forma más sencilla es con copyrclip . Funciona en Python 2 y 3.
Para instalar esta biblioteca, utilice:
pip install pyperclip
Uso de ejemplo:
import pyperclip
pyperclip.copy("your string")
Si desea obtener el contenido del portapapeles:
clipboard_content = pyperclip.paste()
Puedes usar el excelente pandas, que tiene soporte para portapapeles incorporado, pero necesitas pasar por un DataFrame.
import pandas as pd
df=pd.DataFrame(['Text to copy'])
df.to_clipboard(index=False,header=False)