Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
pyperclip и работа с буфером обмена
Средства работы с буфером обмена есть в разных библиотеках, например, в PyQt5 или tkinter. С последней библиотекой мы еще с вами даже не знакомились. Но есть и отдельные модули для с работы буфером обмена, например pyperclip.
Установка модуля производится обычным способом
pip3 install pyperclip # pip для Windows
Скажу сразу, что хотя и пишут, что модуль pyperclip кросплатформенный, но есть видимо некоторая специфика в работе в Windows и Linux. Во всяком случае, в Linux, для того, чтобы заработали все возможности модуля (а часть из них работали) мне пришлось инсталлировать пакет xclip. Инсталляция стандартная
sudo apt-get install xclip
Ну, а теперь к возможностям модуля. Рассматриваемый модуль работает только с текстовым содержимым и если в буфере содержится, например, картинка, то модуль считает, что буфер пуст.
Например
#!/usr/bin/python3
import pyperclip as cl
s = cl.paste()
print(s) # вывести текстовое содержимое буфера
Т.е. метод pyperclip.paste() возвращает текст, содержащийся в буфере обмена операционной системы. Для копирования текста в буфера обмена используется метод pyperclip.copy().
#!/usr/bin/python3
import pyperclip as cl
cl.copy('Этот текст отправляется в буфер обмена')
print(cl.paste())
Результат выполнения программы
Этот текст отправляется в буфер обмена
Метод pyperclip.copy() может отправлять в буфер и числа, но всё равно это будет считаться текстом.
Метод pyperclip.waitForPaste() ждёт, когда буфер обмена будет заполнен текстом. Для проверки метода следует отправить в начале в буфер в начале пустую строку (pyperclip.copy('')) или картинку. В качестве аргумента метод может содержать количество секунд ожидания заполнения буфера.
Замечание 1
Метод pyperclip.waitForPaste() сразу возвращает управление, если в буфере уже есть текст.
Замечание 2
Метод pyperclip.waitForPaste() также возвращает содержимое буфера обмена. Так что в программе выше можно было сразу написать print(cl.waitForPaste(20)).
Замечание 3
После окончании указанного периода выбрасывается исключение, поэтому в программе используется конструкция try-except.
Метод pyperclip.waitForNewPaste() ждёт, когда произойдёт изменение содержимое буфера обмена. Поэтому, даже если буфер обмена уже заполнен текстом, метод будет ждать когда содержимое измениться.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.