【发布时间】:2014-12-06 22:00:06
【问题描述】:
我使用以下代码将我的小脚本的结果放在剪贴板中。
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 并且都收到了一个结果(空剪贴板)。如果我阻止脚本立即退出,在clipboard_append() 之后添加input(),我会看到剪贴板包含正确的“结果”。
更新1:
修改后的测试脚本显示问题不是时序问题:
from tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append("Result")
input()
r.destroy()
如果我运行此脚本,请等待几秒钟,然后按 Enter,我会收到空剪贴板。
如果我运行脚本,切换到任何其他窗口并按 Ctrl+V,我会收到“结果”并且脚本退出后“结果”仍保留在剪贴板中。
我认为在 tcl/tk 8.6 clipboard_clear() 影响系统剪贴板,但 clipboard_append 仅影响仅由操作系统请求传输到系统剪贴板的内部 tcl/tk 剪贴板。看起来它是在没有系统剪贴板的 Linux 中完成的。
更新2:
Tk changelog 中最后提到的剪贴板指的是 2004:
2004-05-03 (bug fix)[939389, 822002, 732662] Correctly post internal
clipboard data to the Windows clipboard on exit. (hobbs)
2004 年纠正的错误似乎在 10 年后又回到了我们身边。
【问题讨论】:
-
我也遇到了同样的问题,希望你发布一个错误报告... (bugs.python.org)
标签: python windows tkinter clipboard python-3.4