我使用以下代码将小脚本的结果放置在剪贴板中。
from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append("Result")
它在 Python 3.3.5 及更早版本上运行良好。但是当我升级到 Python 3.4 时,它收到的是空剪贴板。我尝试了 3.4.0、3.4.1 和 3.4.2,都收到了一个结果(空剪贴板)。如果我阻止脚本立即退出,请添加input()
after clipboard_append()
,我看到剪贴板包含正确的“结果”。
Update1:
修改后的测试脚本显示问题不是时序问题:
from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append("Result")
input()
r.destroy()
如果我运行此脚本,请等待几秒钟,然后按 Enter 键,我会收到空剪贴板。
如果我运行脚本,切换到任何其他窗口并按 Ctrl+V,我会收到“结果”,并且脚本退出后“结果”仍保留在剪贴板中。
我认为在tcl/tk 8.6clipboard_clear()
影响系统剪贴板,但是clipboard_append
仅影响仅通过操作系统请求传输到系统剪贴板的内部 tcl/tk 剪贴板。看起来它是在 Linux 中完成的,没有系统剪贴板。
Update2:
最后提及剪贴板于Tk 变更日志 http://upstream-tracker.org/changelogs/tk/8.6.1/changelog.html指的是 2004 年:
2004-05-03 (bug fix)[939389, 822002, 732662] Correctly post internal
clipboard data to the Windows clipboard on exit. (hobbs)
看来2004年纠正的错误在10年后又回到了我们的身边。