Вы можете сохранить последние 10 текстовых элементов из буфера обмена с помощью Tkinter:
#!/usr/bin/env python3
from tkinter import Tk
from collections import deque
def call_repeatedly(root, delay, func, *args):
func(*args)
root.after(delay, call_repeatedly, root, delay, func, *args)
def poll_clipboard(root, items):
text = root.clipboard_get()
if not items or items[-1] != text:
items.append(text)
def main():
root = Tk()
root.withdraw() # hide GUI
clipboard_items = deque(maxlen=10) # save last 10 clipboard items
call_repeatedly(root, 50, poll_clipboard, root, clipboard_items) # ms
call_repeatedly(root, 1000, print, clipboard_items) # print every second
root.after(10000, root.destroy) # exit in 10 seconds
root.mainloop()
main()
он опрашивает буфер каждые 50 мс. Опрос плохо в общем случае, если есть альтернативный интерфейс, который может позволить вам подписаться на события буфера обмена, которые будут уведомлены, когда новый элемент будет скопирован в буфер обмена.
будет ли он работать для любого контента, текста, изображений и т. Д.?
Этот код работает только с текстом. В общем, вы можете получить/установить другие типы, например, изображения (gtk, qt могут обеспечить кросс-платформенный способ сделать это).
Будет ли это разрешено копировать текст в виде текста во всех приложениях?
Вы работаете с буфером обмена, поэтому да, он должен работать во всех приложениях, которые могут работать с буфером обмена.
Можем ли мы заставить его работать как обычный Ctrl + C (команда копирования)
Copy команда может быть реализована с использованием set
команды, например, from pyperclip.py
:
def gtkSetClipboard(text):
cb = gtk.Clipboard()
cb.set_text(text)
cb.store()
gtkSetClipboard(text)
копии text
в в буфер обмена.
Модуль pyperclip управляет буфером обмена в python. Почему вы не нашли это сами? Я просто googled «буфер обмена python». – djechlin
Я тоже просматривал сообщения на SO. Но я не был уверен, как это сделать для нескольких копий в буфере обмена. Я рассмотрю ваши условия поиска. Спасибо –
Важно, чтобы ваши исследования проводились на SO. Скажите, что вы посмотрели на него, насколько вы получили и т. Д., Иначе ваш вопрос, вероятно, будет закрыт и/или опущен. – djechlin