每当我在我的python解释器中尝试以下操作。我能够单词Hello 复制到命令行,即使我关闭解释无法追加到剪贴板
from Tkinter import Tk
r = Tk()
r.clipboard_append(" hello ")
但是如果我把这个文件称为test.py,然后尝试
python test.py
这就不行,我不能追加该系统剪贴板
是否有任何人知道为什么没有或不知道会造成一个脚本,并在解释器运行它之间有什么区别
每当我在我的python解释器中尝试以下操作。我能够单词Hello 复制到命令行,即使我关闭解释无法追加到剪贴板
from Tkinter import Tk
r = Tk()
r.clipboard_append(" hello ")
但是如果我把这个文件称为test.py,然后尝试
python test.py
这就不行,我不能追加该系统剪贴板
是否有任何人知道为什么没有或不知道会造成一个脚本,并在解释器运行它之间有什么区别
显然只有Tkinter进入主循环后才能使用。这适用于我的系统:
from Tkinter import *
r = Tk()
r.clipboard_append("hello")
r.mainloop()
'r.update()'也足够了,如果你不想要一个主循环。 – 2014-12-03 17:10:53
如果我不想要主循环,该怎么办?我希望我的程序在此之后终止。 'r.update()'没有帮助。使用超时作为解决方法(见下文)确实有效 – Blauhirn 2016-11-28 16:56:30
我也看到了这种差异。建议的tkinter解决方案可以通过命令行将文本放置在剪贴板上,但在程序中使用时会将剪贴板留空。在程序结束时使用mainloop(),但意味着程序不会结束,而使用r.update()似乎没有帮助。
注意:如果剪贴板在程序结束前粘贴到另一个应用程序(通过使程序在最后等待用户输入时挂起),那么tkinter解决方案即使在程序结束后也能正常工作。但是,如果程序在剪贴板粘贴到另一个程序之前结束,剪贴板将变为空白。
像deel,帕特里克牛逼Neslon和其他人的建议,使用:
from Tkinter import *
r = Tk()
r.clipboard_append("hello")
r.mainloop()
没有在非GUI应用程序正常工作(更新也不能工作)(赢7/64,巨蟒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这一个工具,我会用,不是我愿意分布非常广泛,除非有更多经验的人说它的可靠性...
如果你要让解开器打开,那是因为(第一种情况)。一旦python运行并清理自己,它将清除剪贴板中的内容。 – dennmat 2012-02-17 14:54:13
正如我在问题中指出的那样,我关闭了解释器,它仍将它复制到剪贴板。 – samirahmed 2012-02-17 22:45:25
错过了那个部分,不过你应该首先调用clipboard_clear来确保没有什么脏东西。然而,我不确定为什么它们在两者之间会有所不同,因为它们确实是完全相同的东西。希望有人为你解答。 – dennmat 2012-02-17 23:16:45