Невозможно добавить в буфер обмена - PullRequest
7 голосов
/ 17 февраля 2012

Всякий раз, когда я пробую следующее в моем интерпретаторе Python.Я могу скопировать слово hello в командную строку даже после закрытия интерпретатора

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

Однако, если я помещу это в файл с именем test.py, а затем попробую

python test.py

Это не будет работать, я не могу добавить это в системный буфер обмена

Кто-нибудь знает, почему нет или знает, какая разница между выполнением его в скрипте и в интерпретаторе приведет к

Ответы [ 3 ]

4 голосов
/ 21 марта 2012

Очевидно, что он не будет работать, пока Tkinter не окажется в mainloop. Это работает в моей системе:

from Tkinter import *
r = Tk()
r.clipboard_append("hello")
r.mainloop()
2 голосов
/ 24 марта 2015

Я тоже вижу эту разницу в поведении.Предлагаемое решение tkinter для размещения текста в буфере обмена прекрасно работает через командную строку, но оставляет буфер обмена пустым при использовании в программе.Использование mainloop () в конце программы работает, но означает, что программа не заканчивается, и использование r.update (), похоже, не помогает.

Примечание.перед завершением программы (когда программа зависает в конце в ожидании ввода пользователя), решение tkinter работает нормально, даже после завершения программы.Но если программа заканчивается до того, как буфер обмена вставлен в другую программу, буфер обмена становится пустым.

1 голос
/ 14 ноября 2015

Как и Дил, предложение Патрика Т Неслона и других использовать:

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

не работало в приложении без графического интерфейса (обновление также не работало) (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. Это утилита, которую я буду использовать, а не то, что я хотел бы распространять очень широко, если кто-то с большим опытом не скажет, что это надежно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...