如何使用 tkinter 将文件从文件夹复制到剪贴板?

问题描述 投票:0回答:2

我有文件的路径,通常是图像或视频,我想将此文件复制到剪贴板,以便我可以将其粘贴到其他地方,例如:另一个文件夹、网站等。

令人失望的是,以下内容不起作用

loc="C:/Path/To/File"
root.clipboard_clear()
root.clipboard_append(loc)

即使我 ctrl + C 文件并打印

self.parent.clipboard_get()
,我得到
loc

我怎样才能实现这个目标?

python python-3.x tkinter clipboard
2个回答
1
投票

我不认为 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
。这是我旧的答案

的参考

0
投票

作为对 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)

请注意,您可能需要为每个文件/目录路径添加

''

© www.soinside.com 2019 - 2024. All rights reserved.