2012-02-17 68 views
7

每當我在我的python解釋器中嘗試以下操作。我能夠單詞Hello 複製到命令行,即使我關閉解釋無法追加到剪貼板

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

但是如果我把這個文件稱爲test.py,然後嘗試

python test.py 

這就不行,我不能追加該系統剪貼板

是否有任何人知道爲什麼沒有或不知道會造成一個腳本,並在解釋器運行它之間有什麼區別

+0

如果你要讓解開器打開,那是因爲(第一種情況)。一旦python運行並清理自己,它將清除剪貼板中的內容。 – dennmat 2012-02-17 14:54:13

+0

正如我在問題中指出的那樣,我關閉瞭解釋器,它仍將它複製到剪貼板。 – samirahmed 2012-02-17 22:45:25

+1

錯過了那個部分,不過你應該首先調用clipboard_clear來確保沒有什麼髒東西。然而,我不確定爲什麼它們在兩者之間會有所不同,因爲它們確實是完全相同的東西。希望有人爲你解答。 – dennmat 2012-02-17 23:16:45

回答

4

顯然只有Tkinter進入主循環後才能使用。這適用於我的系統:

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

'r.update()'也足夠了,如果你不想要一個主循環。 – 2014-12-03 17:10:53

+0

如果我不想要主循環,該怎麼辦?我希望我的程序在此之後終止。 'r.update()'沒有幫助。使用超時作爲解決方法(見下文)確實有效 – Blauhirn 2016-11-28 16:56:30

2

我也看到了這種差異。建議的tkinter解決方案可以通過命令行將文本放置在剪貼板上,但在程序中使用時會將剪貼板留空。在程序結束時使用mainloop(),但意味着程序不會結束,而使用r.update()似乎沒有幫助。

注意:如果剪貼板在程序結束前粘貼到另一個應用程序(通過使程序在最後等待用戶輸入時掛起),那麼tkinter解決方案即使在程序結束後也能正常工作。但是,如果程序在剪貼板粘貼到另一個程序之前結束,剪貼板將變爲空白。

1

像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這一個工具,我會用,不是我願意分佈非常廣泛,除非有更多經驗的人說它的可靠性...