Python中的复制粘贴

f45qwnt8  于 2023-06-25  发布在  Python
关注(0)|答案(1)|浏览(111)

我是Python新手。所以我想提高我的技能。在发布这个问题之前,我试图找到一些代码或想法,以指导我打算做什么。我确实在SO和其他网站上看到了一些例子和帖子。但他们都(我遇到的那些)展示了如何为单个对象做到这一点。下面是我想做的。
我想用python写一个实用程序,它允许我根据我最近的10个复制命令,从我想要粘贴的内容中选择。假设我在选择文件夹时点击了复制,然后稍后我选择了一些文本并按下ctrl+c。现在,我想得到的选项,将让我粘贴文件夹以及文本。这可能吗?
谢谢

4si2a6ki

4si2a6ki1#

您可以使用tkinter保存剪贴板中的最后10个文本项:

#!/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(复制命令)一样工作吗
复制命令可以使用set命令来实现,例如from pyperclip.py

def gtkSetClipboard(text):
    cb = gtk.Clipboard()
    cb.set_text(text)
    cb.store()

gtkSetClipboard(text)text复制到剪贴板。

相关问题