web-dev-qa-db-ja.com

ハイライトされたテキストをクリップボードにコピーし、クリップボードを使用してリストに追加します

Python 3(Windows 10)用のpyautoguiモジュールを使用してブラウザまたはワードプロセッサでいくつかのアクションを自動化しようとしています。

ブラウザに強調表示されたテキストがあります。

text

次のスクリプトは、強調表示されたテキストを出力する必要があります

import pyautogui as pya

# double clicks on a position of the cursor
pya.doubleClick(pya.position())

list = []
# a function copy_clipboard() should be called here
var = copy_clipboard()
list.append(var) 
print(list)

出力は次のようになります。

[text]

では、関数copy_clipboard()はどのように見えるべきでしょうか?ご協力ありがとうございました。

キーボードコンボCtrl + Cは、ほとんどのアプリで強調表示されているもののコピーを処理し、正常に機能するはずです。この部分はpyautoguiで簡単です。他の人が述べているように、クリップボードの内容をプログラムで取得するには、ctypespywin32、またはその他のライブラリを使用してクリップボードのコンテンツを実装できます。ここで私はpyperclipを選択しました:

import pyautogui as pya
import pyperclip  # handy cross-platform clipboard text handler
import time

def copy_clipboard():
    pya.hotkey('ctrl', 'c')
    time.sleep(.01)  # ctrl-c is usually very fast but your program may execute faster
    return pyperclip.paste()

# double clicks on a position of the cursor
pya.doubleClick(pya.position())

list = []
var = copy_clipboard()
list.append(var) 
print(list)
7
soundstripe

さて...ここにあります:

_from tkinter import Tk

def copy_clipboard():
    clipboard = Tk().clipboard_get()
    return clipboard
_

Tk().clipboard_get()は、クリップボード内の現在のテキストを返します。

そして、最初にpyautogui.hotkey('ctrl', 'c')を使用する必要があります。

2
Muzol

投稿されたサウンドストライプは有効ですが、前の値がコピーされたときにnull値をコピーすることは考慮されていません。 null値のコピーがnull値のままになるように、クリップボードをクリアする追加の行を含めました。

import pyautogui as pya
import pyperclip  # handy cross-platform clipboard text handler
import time

def copy_clipboard():
    pyperclip.copy("") # <- This prevents last copy replacing current copy of null.
    pya.hotkey('ctrl', 'c')
    time.sleep(.01)  # ctrl-c is usually very fast but your program may execute faster
    return pyperclip.paste()

# double clicks on a position of the cursor
pya.doubleClick(pya.position())

list = []
var = copy_clipboard()
list.append(var) 
print(list)
1
phfb

pyperclipをインポートしてpyperclip.copy('my text I want copied')を使用し、次にpyperclip.paste()を使用してテキストを好きな場所に貼り付けることができます。あなたは参照を見つけることができます ここ

0
Woody1193