テキストをクリップボードにコピーする Python スクリプトが必要なだけです。
スクリプトが実行された後、テキストの出力を別のソースに貼り付ける必要があります。この仕事をする python スクリプトを書くことは可能ですか?
macOS では、テキストを次の場所にパイプするために使用しsubprocess.run
ます。pbcopy
import subprocess
data = "hello world"
subprocess.run("pbcopy", universal_newlines=True, input=data)
「hello world」をクリップボードにコピーします。
ネイティブの Python ディレクトリを使用するには、次を使用します。
import subprocess
def copy2clip(txt):
cmd='echo '+txt.strip()+'|clip'
return subprocess.check_call(cmd, shell=True)
Mac では、代わりに:
import subprocess
def copy2clip(txt):
cmd='echo '+txt.strip()+'|pbcopy'
return subprocess.check_call(cmd, shell=True)
次に使用します。
copy2clip('This is on my clipboard!')
関数を呼び出す。
GTK3:
#!/usr/bin/python3
from gi.repository import Gtk, Gdk
class Hello(Gtk.Window):
def __init__(self):
super(Hello, self).__init__()
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clipboard.set_text("hello world", -1)
Gtk.main_quit()
def main():
Hello()
Gtk.main()
if __name__ == "__main__":
main()
このクリップボード 0.0.4 を試してみましたが、うまくいきました。
https://pypi.python.org/pypi/clipboard/0.0.4
import clipboard
clipboard.copy("abc") # now the clipboard content will be string "abc"
text = clipboard.paste() # text will have the content of clipboard
これは、GTK3 に対する @Martin Thoma の回答の変更版です。元の解決策ではプロセスが終了せず、スクリプトを呼び出したときに端末がハングすることがわかりました。スクリプトを次のように変更すると、問題が解決しました。
#!/usr/bin/python3
from gi.repository import Gtk, Gdk
import sys
from time import sleep
class Hello(Gtk.Window):
def __init__(self):
super(Hello, self).__init__()
clipboardText = sys.argv[1]
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clipboard.set_text(clipboardText, -1)
clipboard.store()
def main():
Hello()
if __name__ == "__main__":
main()
おそらく、clipboardText が割り当てられるものを変更したいと思うでしょう。このスクリプトでは、スクリプトが呼び出されるパラメーターに割り当てられます。
python-gobject
ubuntu 16.04の新規インストールでは、モジュールのインポートエラーなしで機能するためにパッケージをインストールする必要があることがわかりました。