我有文件的路径,通常是图像或视频,我想将此文件复制到剪贴板,以便我可以将其粘贴到其他地方,例如:另一个文件夹、网站等。
令人失望的是,以下内容不起作用
loc="C:/Path/To/File"
root.clipboard_clear()
root.clipboard_append(loc)
即使我 ctrl + C 文件并打印
self.parent.clipboard_get()
,我得到 loc
我怎样才能实现这个目标?
我不认为 tkinter 有复制文件的方法,但如果你在 Windows 上,你可以使用 powershell 命令
Set-Clipboard
。您可以使用 subprocess
模块来运行此命令。这是一个最小的例子。
import subprocess
import tkinter as tk
def copy_file():
#cmd = r"ls '{}' | Set-Clipboard".format(absolute_path) # if you only want the contents of folder to be copied
cmd = r"gi '{}' | Set-Clipboard".format("background.png") # copies both folder and its contents
subprocess.run(["powershell", "-command", cmd], shell=True) # windows specific
root = tk.Tk()
copyfile = tk.Button(root, text="Copy file from c:\\", command=copy_file)
copyfile.pack()
root.mainloop()
现在您可能想从另一个线程运行
copy_file
。这是我旧的答案的参考
作为对 Art 答案的补充,您可以使用此 powershell 命令复制多个文件或目录:
Get-Item -LiteralPath C:/Path/To/File1,C:/Path/To/File1,C:/Path/To/Dir1 | Set-Clipboard
所以Python代码将如下所示:
import subprocess
def copy_file(paths):
cmd = r"Get-Item -LiteralPath {} | Set-Clipboard".format(','.join(paths))
subprocess.run(["powershell", "-command", cmd], shell=True)
请注意,您可能需要为每个文件/目录路径添加
''
。