无法附加到剪贴板

时间:2012-02-17 02:26:17

标签: python tkinter tk

每当我在python解释器中尝试以下操作时。我能够复制“你好”这个词 到命令行,即使我关闭了解释器

from Tkinter import Tk
r = Tk()
r.clipboard_append(" hello ")

但是,如果我将其放在名为test.py的文件中,然后尝试

python test.py

这不起作用,我无法将其附加到系统剪贴板

有没有人知道为什么不知道或知道在脚本和解释器中运行它会有什么区别

3 个答案:

答案 0 :(得分:4)

显然,直到Tkinter进入它的主循环才会起作用。这适用于我的系统:

from Tkinter import *
r = Tk()
r.clipboard_append("hello")
r.mainloop()

答案 1 :(得分:2)

我也看到了这种行为上的差异。用于在剪贴板上放置文本的建议tkinter解决方案通过命令行正常工作,但在程序中使用时将剪贴板留空。在程序结束时使用mainloop()工作,但意味着程序不会结束,并且使用r.update()似乎没有帮助。

注意:如果在程序结束之前将剪贴板粘贴到另一个应用程序(通过使程序在等待用户输入时挂起),那么即使在程序结束后,tkinter解决方案也能正常工作。但是如果程序在剪贴板粘贴到另一个程序之前结束,则剪贴板最终为空。

答案 2 :(得分:1)

像deel一样,Patrick T Neslon和其他人的建议使用:

from Tkinter import *
r = Tk()
r.clipboard_append("hello")
r.mainloop()

在非gui应用程序中不起作用(更新也不起作用)(Win 7/64,Python 2.7.10 / 32)。这虽然看起来像是一个黑客,但受到https://bugs.python.org/issue23760的启发:

from Tkinter import *
r = Tk()
r.clipboard_clear()
r.clipboard_append("hello")
r.after(500, tk.destroy)
r.mainloop()

100毫秒通常在我的系统上工作,所以用500.这对于我将使用的实用程序,而不是我想要非常广泛分发的东西,除非有更多经验的人说它可靠......