Я пытаюсь создать базовое приложение Windows, которое создает строку из введенных пользователем данных, а затем добавляет ее в буфер обмена. Как мне скопировать строку в буфер обмена с помощью Python?
Переведено автоматически
Ответ 1
На самом деле, pywin32 и ctypes кажутся излишними для этой простой задачи. tkinter это кроссплатформенный графический фреймворк, который по умолчанию поставляется с Python и имеет методы доступа к буферу обмена наряду с другими интересными вещами.
Если все, что вам нужно, это поместить некоторый текст в системный буфер обмена, это сделает это:
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()
И это все, нет необходимости возиться со сторонними библиотеками, зависящими от платформы.
Если вы используете Python 2, замените tkinter на Tkinter.
Ответ 2
У меня не было решения, только обходной путь.
В Windows Vista и более поздних версиях есть встроенная команда с именем clip, которая принимает вывод команды из командной строки и помещает ее в буфер обмена. Например, ipconfig | clip.
Итак, я создал функцию с os модулем, который принимает строку и добавляет ее в буфер обмена, используя встроенное решение Windows.
# Penny Lane is now in your ears, eyes, and clipboard.
Однако, как ранее отмечалось в комментариях, одним из недостатков этого подхода является то, что echo команда автоматически добавляет перевод строки в конец вашего текста. Чтобы избежать этого, вы можете использовать модифицированную версию команды:
Вы можете использовать pyperclip - кроссплатформенный модуль буфера обмена. Или Xerox - аналогичный модуль, за исключением того, что для работы в Windows требуется модуль win32 Python.
Ответ 4
Самый простой способ - с помощью pyperclip. Работает на python 2 и 3.